Python Django多租户
Tl;dr:有没有一种方法可以覆盖默认的行为 在我的django项目中,我有很多URL,比如Python Django多租户,python,django,django-urls,Python,Django,Django Urls,Tl;dr:有没有一种方法可以覆盖默认的行为 在我的django项目中,我有很多URL,比如 url(r'^\w+/company/', include("company.urls", namespace="company")), .../companyA/company/ .../companyB/company/ 它允许URL,例如 url(r'^\w+/company/', include("company.urls", namespace="company")), .../co
url(r'^\w+/company/', include("company.urls", namespace="company")),
.../companyA/company/
.../companyB/company/
它允许URL,例如
url(r'^\w+/company/', include("company.urls", namespace="company")),
.../companyA/company/
.../companyB/company/
这样,我就可以使用自定义中间件修改请求,根据公司使用我的站点的情况,包括一些特定的细节
除了django试图用reverse
和{%url..%}
破译完整路径外,这一切都可以正常工作
它似乎返回了/x/company/
,作为正则表达式的默认匹配项。因为django.utils.regex\u helper
方法next\u char
有一个转义映射,\w
映射到x
url
标记我已经能够用正确的公司名称替换/x/
,我想知道是否有类似的方法可以用同样的方法覆盖反向
,或者我可以做些什么来解决这个问题
以前,我用的是
url(r'^(?P<company_name>\w+)/company/', include("company.urls", namespace="company"))
以及将其包含在我试图避免的对视图的所有其他调用(即使用
{%url%}
)中。为了便于使用,Django包作为编译包可以实现这一点。然而,下面是我自己的简单实现
我修改了我的nginx代理配置以使用以下内容
server_name ~(?<short_url>\w+)\.domainurl\.com$;
... stuff related to static files here
location / {
proxy_set_header X-CustomUrl $short_url;
.... other proxy settings
}
示例:
www.companya.domainurl.com # short_url is companya
test.domainurl.com # short_url is test
要在模板中使用此选项,必须将上下文处理器添加到settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
'django.core.context_processors.request' # This one in particular
)
您正在尝试进行多租户。有几种方法可以解决这个问题(覆盖反向不是其中之一)。请看。@BurhanKhalid-我查看了该链接中建议的一个包,它们确实存在,尽管它们的方法涉及根据设置返回不同的url,但我希望有更具动态性的东西(老实说,我认为这是不可能的)