2012-10-15 58 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

相關問題