我一直在研究在单个Django框架下拥有多个站点的各种方法(并且有很多)。如何使用独特的settings.py为每个SITE_ID设置django
我仍然没有看到适合我的用例的解决方案。用例之中:
- 单个数据库,因为大多数数据的(95%+)将在两个 应用
- 两个不同的用户类型之间被共享,经由不同的域, 和在每个登录其实用相同的原始数据进行交互,不同
我想实现的是:
当访问者来到example.com,为SITE_ID = 1的设置生效。
当访问者来到training.example.com时,SITE_ID = 2的设置将生效。
我想这样做的原因是:
- 我想用明确不同的用户配置的对象为不同的用户
- 我想组合和不同的域之间的匹配,在我的意志的看法和应用
关于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)
我的情景io在这里应该可以工作,但它将是在相同的Django实例中解决这个问题的两倍内存。
任何我需要实现的更好的实现?
设置位于项目范围,而不是应用程序范围。 – pwalsh
我的不好。 Meant项目一直 – user1658078