gpt4 book ai didi

python - 是否可以在 Django 管理站点上使用查询参数

转载 作者:行者123 更新时间:2023-12-05 07:49:47 25 4
gpt4 key购买 nike

我使用 Multi-Tenancy 并通过查询参数传递 schema name。我的 middleware 负责处理参数并设置正确的架构。它在我的 API 请求(直接 postsgets)上运行良好,但现在我需要通过在URL 查询参数。

问题是:

当我访问

http://localhost:8000/admin/?schema_name=myschema

我的 middleware 捕获参数,但管理站点将我重定向到具有以下 URL 的登录页面:

http://localhost:8000/admin/login/?next=/admin/%3Fschema_name%3Dmyschema

在这次重定向之后,它似乎再次通过我的中间件,这次没有?schema_name=myschema参数,导致我的中间件每次 Django 重定向 URL 时将架构设置为公开。

有没有办法让 Django 管理站点知道这个参数,即使某些重定向更改了 URL? (或者甚至可能是我可以用来让管理站点租户知道的不同方法的建议)。

提前致谢。

最佳答案

只是在处理同一个问题。

问题是 django 管理员捕获任何未知的(通过管理员 View 上的某些过滤器未注册)查询参数,如果发现任何异常会引发重定向

解决方案是在中间件中调用类似的东西:

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 管理站点是未知的(在请求到达管理 View 之前被删除)。请注意,此中间件应位于设置中中间件列表的顶部。

这很脏,而且很老套。虽然我还没有找到更好的解决方案。

关于python - 是否可以在 Django 管理站点上使用查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36947619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com