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