2012-10-15 28 views
3

我一直在研究在单个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实例中解决这个问题的两倍内存。

任何我需要实现的更好的实现?

回答

-1

对于我所知道的settings.py对于每个django项目都是唯一的,并且SITE_ID在此级别定义。恕我直言,最好的方法是将许多django项目与数据库路由器一起使用。在每个项目中,您都可以定义SITE_ID以与django网站框架一起使用。 https://docs.djangoproject.com/en/dev/topics/db/multi-db/#database-routers

+0

设置位于项目范围,而不是应用程序范围。 – pwalsh

+0

我的不好。 Meant项目一直 – user1658078

相关问题