通过 测试我的 django 网站时python manage.py runserver 0.0.0.0:8000
,没有错误。
但是如果我使用 apache 和 mod_wsgi 将它部署到生产环境,它会报告错误cannot import name connection
。
我发现了一些其他问题,例如django 1.4 数据库路由器 - “无法导入名称连接”建议添加from django.db import connections
到 settings.py 中。
但我发现添加这个导入可以防止这个错误,但它也会禁用数据库路由器。
我认为这可能是由于manage.py runserver
和 WSGI 之间的运行环境不同。这就是我的 wsgi.py 的样子
import os
import sys
sys.path.insert(0,"/home/my/myweb")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mywebsite.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
我该如何修复这个错误?
我的python版本是2.7,django版本是1.4.3
编辑1:
我的操作系统是 CentOS 6.4,在这台服务器上:
如果我使用 运行它python manage.py runserver 0.0.0.0:8000
,则没有错误。
如果我删除数据库路由器,它可以在 WSGI 下工作。
但是数据库路由器和 WSGI 不能一起工作。
任何建议表示赞赏。
编辑2:
感谢@Graham Dumpleton,我自己解决了。
这是对我有用的 wsgy.py。
import sys
sys.path.insert(0, '/home/my/myweb')
from mywebsite import settings
import django.core.management
django.core.management.setup_environ(settings)
utility = django.core.management.ManagementUtility()
command = utility.fetch_command('runserver')
command.validate()
import django.conf
import django.utils
django.utils.translation.activate(django.conf.settings.LANGUAGE_CODE)
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()