2

在过去的几周里,我正在运行 Django 1.5,开发具有多个数据库的应用程序。我为单独的数据库设置了一个路由器,并将其放置在我的项目目录中的 routers.py 下,我确保按照 django 文档的指示将路径添加到路由器:

# Extra Database Routing modules
DATABASE_ROUTERS = ['myapp.routers.MyRouter']

这奏效了。在过去的 2 周内,没有任何问题。现在,在我取出一个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 中的所有内容,__init__.py其中包括from django.conf import settings然后覆盖我已经拥有的设置。(或者至少我相信这就是正在发生的事情)重点是正在发生一些我不完全理解的事情。

谁能解释一下为什么我的路由器突然无法导入?

4

1 回答 1

1

在打开核心 django 文件几个小时后,似乎出现了循环导入,这实际上是 Django 框架中的一个错误,已针对 1.6 进行了修复:这是票证 < code.djangoproject.com/ticket/20704 >;将包含我的项目目录中的自定义路由器的 routers.py 移动到另一个模块(我使用没有任何init .py 文件的 app 模块)使一切再次正常运行。希望这可以避免一些人头疼。

于 2013-08-09T16:15:49.487 回答