我有一些自定义逻辑,即使URL对于第三方应用程序,URL每次反向都需要执行.我的项目是一个多租户Web应用程序,并且根据URL标识了租户.没有一个有效的URL不包含租户标识符.
我已经有了逆向包装函数,但是现在我需要一种方法来告诉每个已安装的应用程序使用它.反向包装器使用局部线程将标识符注入到结果URL中.我可以将这个功能写为反向装饰器,但是我不知道在哪里进行实际装饰.
中度公司约束:我已经在使用3个第三方应用程序,并且可能还会添加更多.解决方案不应要求我修改所有这些第三方应用程序的源代码.如果有更简单的方法,我不喜欢在多个第三方源代码树的顶部维护补丁的想法.我可以使文档清楚地表明反向装饰已被装饰.
最初的问题:我在哪里可以进行这样的更改以保证它适用于每次反向调用?
可能的替代问题:有什么更好的方法来确保每个URL(包括由第三方应用生成的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的每种用法,否则我不建议这样做(很多人会大喊)