簡體   English   中英

是否可以在Django Admin網站上使用查詢參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM