Django多租户URL配置

2024-05-23 18:51:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试向应用程序添加一些简单的租赁支持,创建一个帐户模型,其中包含一个字符串“tenant”,可从请求url中读取,并在系统中标识租户:

租户。example.com网站/*->;www.example.com网站/租户/*(由apache重写)

我编写了一个简单的中间件来捕获这个/tenant/from请求.路径并添加一个帐户请求要处理的对象。在

我的问题是我的url映射。在

我试过了:

url(r'^(?P<tenant_id>[\w\-]+)/', include('project.urls_tenant')),

并在url中定义了一些简单的url_租户.py公司名称:

^{pr2}$

当我试图访问任何页面时,都会收到一条错误消息:

generic_view_method() got an unexpected keyword argument 'tenant_id'

因为它不需要(也不应该)将tenant_id作为参数。在

如果我在网址.py/test\u tenant/文件名归档,一切正常。在

我做错了什么?如何修复它,从而使请求和响应得到正常处理?在

非常感谢你们。我用这个作为参考:optimal architecture for multitenant application on django


Tags: 字符串py模型comid应用程序url网站
2条回答

如果我正确理解您的设置,您已经定义:

url(r'^(?P<tenant_id>[\w\-]+)/', include('project.urls_tenant')),

在我们的主要网址.py文件和URL中的其他行_租户.py文件?在

从那里拿出来不会有任何符合^(?)的请求?P[\w-]+)/通过 通过URL_租户.py文件?您在那里定义的两行只能匹配/app1或/app2。在

但我猜我还没完全理解你的设置?在

我认为最好是将租户url映射到特定的视图,而不是包含不同的视图网址.py文件 (我甚至不知道这是可能的)。在

^{pr2}$

像上面这样的东西在我看来更像是django。在

当您显然不需要时,您正在url模式中捕获命名参数tenant_id。尝试删除括号以避免执行捕获:

url(r'^[\w\-]+/', include('project.urls_tenant')),

本页通常是一本有用的读物: https://docs.djangoproject.com/en/dev/topics/http/urls/#how-django-processes-a-request

相关问题 更多 >