予有需要每一次一个URL被反转,即使对于第三方应用程序要执行一些定制逻辑。我的项目是一个多租户Web应用程序,而租户是基于URL标识。没有不包括租户标识符的单个有效的URL。

我身边已经有了reverse的包装功能,但现在我需要一种方法来告诉每一个安装的应用程序来使用它。各地reverse包装器使用一个线程本地的标识注入所产生的URL。我可以写这个函数作为reverse一个装饰,但我不知道在哪里做实际的装修。

适度硬性限制:我已经使用3第三方应用程序,我可能会增加更多。溶液的不应该的要求我修改所有这些第三方应用程序的源代码。我可不乐意维持在多个第三方源代码树的顶部补丁,如果有一个更简单的方法的想法。我可以使文档十分清楚地表明reverse已装饰。

原来的问题:我在哪里可以做出这样可保证它将适用于reverse的每次调用

的变化?

可能的替代问题:什么是确保每一个网址,包括第三方生成的应用程序,得到租户标识符的更好的办法? 顺便说一句,我是开到一个更好的方式来处理任何这只是在URL中的租户ID的嵌入;这一决定是在石头漂亮设定现在。感谢。

感谢。

有帮助吗?

解决方案

唯一方式使得django的反向由ur_reverse替换是

django.core.urlresolvers.reverse = ur_reverse

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

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

是我所不愿意的意见(很多人会喊),除非你是不是愿意改变反向的每一个使用与ur_reverse

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top