我一直在研究在单个 Django 框架下拥有多个站点的各种(并且有很多)方法。
我仍然没有看到适合我的用例的解决方案。用例是:
- 单个数据库,因为大部分数据 (95%+) 将在两个应用程序之间共享
- 两种不同的用户类型,每个都通过不同的域登录,实际上与相同的原始数据交互,不同
我想要实现的是:
当访问者访问 example.com 时,SITE_ID = 1 的设置生效。
当访问者访问 training.example.com 时,SITE_ID = 2 的设置生效。
我想这样做是因为:
- 我想为不同的用户使用明确不同的 UserProfile 对象
- 我想在不同域之间随意混合和匹配视图和应用程序
Sites 框架上的 Django 文档似乎对我没有帮助,尽管有这篇文章和其他一些文章,我可以看到一些可能性。
我目前的想法是使用 wsgi 服务器(在我的例子中为 uWSGI)来实际解决它,我将在其中获取 Django 的默认 wsgi.py,复制它,每个 wsgi conf 都会有自己的 Django settings.py。
然后服务器实际上将服务于两个不同的 wsgi 应用程序,即使它们使用许多相同的代码。
因此,在这种情况下,我的 Django 项目将具有:
- example.com.settings.py (SITE_ID = 1)
- training.example.com.settings.py (SITE_ID = 2)
- example.com.wsgi.py(使用 example.com.settings.py)
- training.example.com.wsgi.py(使用 training.example.com.settings.py)
我的场景应该可以工作,但是在同一个 Django 实例中解决这个问题的内存将是两倍。
对于我需要实现的目标有什么更好的实现吗?