1

我有一个 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

但我仍然不明白如何实现我所需要的。听起来很合乎逻辑,只是使用我的方法,不要弄乱我的数据库。如果它是可能的。

欢迎任何线索。提前致谢!

4

0 回答 0