我有一个 Django 应用程序,可以为不同的网站提供服务。
- 每个人都有自己的域名
- 每个人都有自己的带有模板和视图的子应用程序
- 它们都共享相同的后端、模型和数据
我的方法
由于我已经拥有包含细分信息的数据库,因此我需要在每个站点中显示所需的产品,并且每个子应用程序都有不同的视图,因此我不需要在模型中添加另一个字段。
我认为在我的主应用程序 urls.py 中检测请求域并将主页 url 路由到所需的子应用程序会更容易。
就像是:
# urls.py
if "name1" in request.domain:
urlpatterns += [path('', include('app1.urls'))]
if "name2" in request.domain:
urlpatterns += [path('', include('app2.urls'))]
else:
urlpatterns += [path('', include('app3.urls'))]
也许我应该制作一个中间件并设置一个我可以在 urls.py 中访问的全局变量?我可以在 urls.py 中使用这种 if 语句吗?
Django 站点
我检查了 Django Sites Framework,但如果我理解得很好,它更侧重于在模型中分割数据库,而不是模板和视图。无论如何,我并没有真正理解 Sites 框架如何检测传入的 URL 并将请求植根到每个子应用程序。
其他意图
我搜索了更多信息,这篇文章可以简要介绍我发现的问题的不同文章。
https://medium.com/crowdbotics/how-to-use-dynamic-subdomains-in-django-dc1cb2cac00b
但我仍然不明白如何实现我所需要的。听起来很合乎逻辑,只是使用我的方法,不要弄乱我的数据库。如果它是可能的。
欢迎任何线索。提前致谢!