gpt4 book ai didi

python - 是否可以在 Django 项目中重新定义反向?

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:24 24 4
gpt4 key购买 nike

我有一些自定义逻辑需要在每次反转 URL 时执行,即使对于第三方应用程序也是如此。我的项目是一个 Multi-Tenancy 网络应用程序,租户是根据 URL 识别的。没有一个有效的 URL 不包含租户标识符。

我已经有了一个围绕 reverse 的包装函数,但现在我需要一种方法来告诉每个已安装的应用程序使用它。 reverse 的包装器使用本地线程将标识符注入(inject)到生成的 URL 中。我可以将此函数编写为 reverse 上的装饰器,但我不知道在哪里进行实际装饰。

适度严格的约束:我已经在使用 3 个第 3 方应用程序,我可能会添加更多。解决方案不应该要求我修改所有这些第三方应用程序的源代码。如果有更简单的方法,我不喜欢在多个第 3 方源代码树之上维护补丁的想法。我可以使文档非常清楚 reverse 已被修饰。

原始问题:我可以在哪里进行这样的更改,以保证它适用于 reverse 的每次调用?

可能的替代问题:确保每个 URL(包括由第 3 方应用程序生成的 URL)获得租户标识符的更好方法是什么?顺便说一句,除了在 URL 中嵌入 tenant-id 之外,我愿意接受一种更好的方法来处理这些问题;这个决定现在已经很确定了。谢谢。

谢谢。

最佳答案

将 django reverse 替换为 ur_reverse 的唯一方法是

django.core.urlresolvers.reverse = ur_reverse

或者如果你喜欢装饰器语法糖

django.core.urlresolvers.reverse = ur_reverse_decorator(django.core.urlresolvers.reverse )

我不会建议(很多人会大喊大叫),除非你不愿意用 ur_reverse 改变 reverse 的每一个用法

关于python - 是否可以在 Django 项目中重新定义反向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1700577/

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