2012-02-29 5 views
2

私はDjangoでSaaSプロジェクトを作成しています。 私はdjango-saas-kitをユーザーサブスクリプションとマルチアカウントの部分に使用することに決めました。DjangoとSaaS。 Djangoサイトごとに別々のデータベースを使用するには?

理想的には、各ユーザーと別のデータベース用に新しいサイトを作成したいと考えています。 サイトフレームワークはこれをサポートしていますか?どのように実装できますか?

ありがとうございました。

答えて

4

"clients"フォルダとクライアントごとのサブディレクトリを作成する必要があります。各サブディレクトリには、のような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') 

またはジャンゴ-zstaskと::

ZTASKD_URL = 'ipc:///tmp/%s_ztask.sock' % SITE_NAME 

それともJohnnyCacheとあなたはヒューという音と干し草の山を使用する場合たとえば、あなたはそれがクライアント間で混同されないように、これを追加する必要があります:

JOHNNY_MIDDLEWARE_KEY_PREFIX=SITE_NAME 
+0

ありがとうございました。また、ztaskdを使用するための答えを提供したバックグラウンド・タスクに関する質問もありました。私は今セロリを使用しています。それには解決策はありますか?セロリやztaskdのどちらを好きですか教えてください。 – thelinuxer

+1

djkombuをトランスポートに使用する場合、メッセージはデータベースを通過し、競合は発生しません。しかし、私はセロリをよく知りません... – jpic

+2

私は答えませんでした:最初にセロリを試して、それはうまく動作します。しかし、私はdjango-ztaskを試してみました。それは単純な方法以外は基本的な必要性とほぼ同じです。特に、インストールがずっと速く、扱いも少なくて済みます。 – jpic

関連する問題