可能很简单的问题,我只是错过了一些东西,但我没有想法。
我有 Django 项目为几个具有不同sessions.py
且完全不同ROOT_URLCONF
的站点提供服务。一个站点处理用户注册、身份验证和配置文件设置,另一个站点(在另一个域上)充当文件管理器等等。站点共享相同的数据库、媒体和模板。所有站点都共享相同的用户群,实现了一种透明的单点登录/单点注销机制。它就像一个大站点,跨越多个域。
问题是,我的模板中有很多{% url %}
标签,当模板在其他网站上使用时它们不起作用。而且我想尽可能避免对 URL 进行硬编码。
例如,在站点 A (a.example.org) 我有一个
url('^users/$', 'example.accounts.list_users', name='list_users'),
A 的 URLconf 中的条目。然后,在global_menu.html
我拥有的一些模板中{% url list_users %}
,显然它工作得很好,导致“ /users/
”。
现在,有站点 B (b.example.org),与 A 共享许多内部结构。为了有共同的外观和感觉,我想global_menu.html
在站点 B 上使用相同的并希望{% url list_users %}
输出“ http://a.example.org/users/
”。我能做到这一点的最佳方法是什么?
目前,我global_menu.html
为每个站点使用单独的,但这违反了 DRY 原则,并且不是很方便。而且,是的,我正在使用 Django 的contrib.sites
框架,并为每个站点SITE_ID
定义了不同的 s settings.py
,但实际上还没有在其他任何地方使用它。
更新:目前我正在考虑重新实现url
tag 或 monkey-patching reverse()
,调用原始的,并在异常情况下在一些“外部 URI 列表”中执行额外的查找。如果已经存在这样的东西——我很高兴听到。
预先感谢您的回答!