[英]Is it possible to use query parameters on the Django Admin Site
我使用多租戶,正在通過查詢參數傳遞schema name
。 我的middleware
負責參數並設置正確的架構。 它在我的API請求(直接發帖和gets )上效果很好,但是現在我需要通過在URL查詢參數上指定架構名稱來訪問每個架構的管理頁面。
這是問題所在:
當我訪問
http://localhost:8000/admin/?schema_name=myschema
我的middleware
捕獲了該參數,但是管理站點將我重定向到具有以下URL的登錄頁面:
http://localhost:8000/admin/login/?next=/admin/%3Fschema_name%3Dmyschema
重定向之后,似乎它再次通過了我的middleware
,這次沒有使用?schema_name=myschema
參數,這導致我的middleware
每次Django重定向URL時都將架構設置為public。
有什么方法可以使Django Admin站點知道此參數,即使某些重定向更改了URL? (甚至可能是我可以用來使管理站點租戶知道的其他方法的建議)。
提前致謝。
只是在解決相同的問題。
問題是django admin捕獲了任何未知的(通過admin視圖上的某個過濾器未注冊的)查詢參數,並且如果發現任何參數會引發重定向的異常
解決方案是在中間件內部調用類似的方法:
def extract_client_id_from_admin_api_url(request):
request.GET._mutable = True
client_id = request.GET.pop('client_id', None)
request.GET._mutable = False
return client_id[0] if client_id else None
這樣您的查詢參數對於django管理站點是未知的(在請求到達管理視圖之前已刪除)。 請注意,此中間件應位於設置中中間件列表的頂部。
這很臟,很亂。 雖然我還沒有找到更好的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.