Django多个数据库和登录

时间:2015-08-29 18:03:44

标签: django python-3.x

我想创建一个包含多个数据库的Django应用程序。每个客户一个数据库。每个客户都有自己的用户现在我可以看到这很容易设置:

我定义了一个中间件来查看url并设置thread.local变量:

my_local_global = local()

class AccountDatabaseMiddleware(object):

    def process_request(self, request):
        database_name = self.get_database_name_from_request(request)
        my_local_global.database_name = database_name

    def get_database_name_from_request(self, request):

       hostname = remove_www(request.get_host().split(':')[0])

       if hostname == '127.0.0.1':
           return 'default'

       database_name = hostname.split('.')[0]
       return database_name

和指向给定db的路由器:

class PartitionRouter(object):

def db_for_write(self, model, **hints):
    from myapp.middleware import my_local_global
    try:
        return my_local_global.database_name
    except AttributeError:
        return 'default'


def db_for_read(self, model, **hints):
    from babeldat.middleware import my_local_global
    try:
        return my_local_global.database_name
    except AttributeError:
        return 'default'

我的问题实际上是以下,那么简单吗?或者我错过了什么,这不是要走的路,我会遇到各种各样的问题(比如每个拥有django_sessions表的数据库,以及django_contenttypes等)......

0 个答案:

没有答案