2
我正在用Django創建一個SaaS項目。 我決定使用django-saas-kit作爲用戶訂閱和多帳戶部分。Django和SaaS。如何爲每個Django站點使用單獨的數據庫?
理想情況下,我希望能夠爲每個用戶和一個單獨的數據庫創建一個新站點。 網站框架是否支持這個?它如何實施?
謝謝。
我正在用Django創建一個SaaS項目。 我決定使用django-saas-kit作爲用戶訂閱和多帳戶部分。Django和SaaS。如何爲每個Django站點使用單獨的數據庫?
理想情況下,我希望能夠爲每個用戶和一個單獨的數據庫創建一個新站點。 網站框架是否支持這個?它如何實施?
謝謝。
您應該爲每個客戶端創建一個「客戶端」文件夾和一個子目錄。在每個子目錄中,創建一個site_settings.py文件如:
import os.path
# import global settings
from settings import *
# this is barely just the name of the client dir, you might want to use that
SITE_NAME = __file__.split('/')[-2]
# this is the directory of the client website
CLIENT_ROOT = os.path.abspath(os.path.dirname(__file__))
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': SITE_NAME,
'USER': SITE_NAME,
'PASSWORD': 'some random password',
}
}
# you might want this too so that each client have his own MEDIA_ROOT
MEDIA_ROOT = os.path.join(CLIENT_ROOT, 'upload')
那就不要忘記使用--settings開關管理命令。例如:
./manage.py syncdb --settings=clients.demo.site_settings
不要忘記,每個客戶都需要有自己的額外的東西。例如,如果您使用的草垛與嗖,你需要添加這一點,以便它不會弄混客戶端之間:
HAYSTACK_WHOOSH_PATH = os.path.join(CLIENT_ROOT, 'whoosh')
或者用的Django zstask:
ZTASKD_URL = 'ipc:///tmp/%s_ztask.sock' % SITE_NAME
或用JohnnyCache :
JOHNNY_MIDDLEWARE_KEY_PREFIX=SITE_NAME
非常感謝你的回答:)。我也有關於使用ztaskd提供答案的後臺任務的問題。我現在正在使用芹菜。有沒有解決方案?還請告訴我哪個更喜歡芹菜或ztaskd? – thelinuxer 2012-02-29 14:14:03
如果使用djkombu進行傳輸,則消息通過數據庫傳遞,不應該有衝突。但我不知道芹菜那麼好... – jpic 2012-02-29 14:15:17
我沒有回答:首先我嘗試芹菜,它運作良好。但後來我嘗試了django-ztask,除了它更簡單 - 它的安裝速度更快,所需的護理更少,對基本需求也幾乎相同。 – jpic 2012-02-29 14:33:46