Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将Django CMS集成到当前的Django项目中,但使用两个分开的数据库_Python_Mysql_Django - Fatal编程技术网

Python 将Django CMS集成到当前的Django项目中,但使用两个分开的数据库

Python 将Django CMS集成到当前的Django项目中,但使用两个分开的数据库,python,mysql,django,Python,Mysql,Django,我有一个已经运行的Django项目:foo_proj,我将Django cms集成到这个项目中,因此一些页面包含由Django cms管理的“内容”,这已经起作用了 然而,他们使用的是同一个数据库:foo_db,即: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'foo_db', 'USER': 'root', 'PASSWORD': 'SecRete!',

我有一个已经运行的Django项目:foo_proj,我将Django cms集成到这个项目中,因此一些页面包含由Django cms管理的“内容”,这已经起作用了

然而,他们使用的是同一个数据库:foo_db,即:

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'foo_db',
    'USER': 'root',
    'PASSWORD': 'SecRete!',
    'HOST': '',
    'PORT': '',
  }
}
我不确定是否可以将他们分开,这样他们的身份验证/授权就完全分开了,用户可以在foo_proj上注册,但他们不能登录到“/cms”,这样我就可以控制对“/cms”拥有编辑权限的有限用户帐户

我尝试使用Django,代码如下:

from django.conf import settings

class foo_projDBRouter(object):
    def is_cms_app(self, app_label):
        return app_label in ['cms', 'reversion']

    def db_for_read(self, model, **hints):
        if self.is_cms_app(model._meta.app_label):
            return 'cms'
        else:
            return 'foo_proj'

    def db_for_write(self, model, **hints):
        if self.is_cms_app(model._meta.app_label):
            return 'cms'
        else:
            return 'foo_proj'

    def allow_relation(self, obj1, obj2, **hints):
        if not self.is_cms_app(model._meta.app_label):
            return True
        return None

    def allow_migrate(self, db, model):
        return True
在我的设置中:

DATABASE_ROUTERS = ['foo_proj.db_route.FooProjDBRouter']
DATABASES = {
    'default': {},
    'foo_proj': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'adsk_foo_proj',
        'USER': 'root',
        'PASSWORD': 'Secret!',
        'HOST': '',
        'PORT': '',
    },
    'cms': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'cms',
        'USER': 'root',
        'PASSWORD': 'Secret!',
        'HOST': '',
        'PORT': '',
    }
}
我没有让它为我工作,我怀疑这是否会起作用?有什么建议吗

目标是分离my foo_proj和django cms的DBs,但在用户导航到foo_proj中的页面时动态呈现cms内容


实际上,在官方文档页面:,它提到:“为了有效地使用django CMS,我们建议:为django CMS创建一个单独的数据库。”,但似乎没有关于如何分离数据库的进一步详细信息。

数据库配置中有一个问题,以下是必需的。(见#必选)


您的
allow\u关系
方法调用了未定义的
model
。您可以改用这个(来自Django):


这是一个粗心的错误,我只是加了回去。。。我仍然得到错误:django.core.exceptions.impropertlyconfigured:settings.DATABASES配置不正确。请提供发动机值。有关详细信息,请查看设置文档。
DATABASES = {
    'default': {},  # REQUIRED
    'foo_proj': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'adsk_foo_proj',
        'USER': 'root',
        'PASSWORD': 'Secret!',
        'HOST': '',
        'PORT': '',
    },
    'cms': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'cms',
        'USER': 'root',
        'PASSWORD': 'Secret!',
        'HOST': '',
        'PORT': '',
    }
}
def allow_relation(self, obj1, obj2, **hints):
    """
    Allow relations if a model in the auth app is involved.
    """
    if obj1._meta.app_label == 'auth' or \
       obj2._meta.app_label == 'auth':
       return True
    return None