繁体   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