我在过去几周内运行Django 1.5开发具有多个数据库的应用程序。我为一个单独的数据库设置了一个路由器,将它放在我的项目目录中的routers.py下的设置中我确保按照django文档规定的方式添加到路由器的路径:
# Extra Database Routing modules
DATABASE_ROUTERS = ['myapp.routers.MyRouter']
这很有效。在过去的两周里,没有任何问题。现在,在我拿出未使用的from djanog.conf import settings
之后保存了models.py文件之后,我在运行python manage.py runserver
之后在我的开发服务器上得到了这个:
Validating models...
0 errors found
August 02, 2013 - 16:12:42
Django version 1.5.1, using settings 'app.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
ImproperlyConfigured: Error importing database router MyRouter: "cannot import name connection"
请注意,它在出错之前验证了所有模型。这对我没有任何意义。 我去了这些地方寻求答案
尝试在我的设置文件中导入与from django.db import connections
的连接,导致导致ImproperlyConfigured: The SECRET_KEY setting must not be empty.
这只是因为导入connections
时它还会导入django.db {{1}内的所有内容其中包括__init__.py
,然后覆盖我已经拥有的设置。 (或者至少我相信这是正在发生的事情)重点在于发生了一些我不完全理解的事情。
任何人都可以解释为什么突然我的路由器无法导入?
答案 0 :(得分:1)
在核心django文件上电几个小时之后,似乎有一个循环导入,这实际上是一个针对1.6修复的Django框架内的错误:这里的票证< code.djangoproject.com/ticket/20704取代;将包含我的项目目录中的自定义路由器的routers.py移动到另一个模块(我使用的app模块没有任何 init .py文件)使所有内容再次正常运行。希望这可以节省一些令人头疼的问题。