我正在通过 mod_wsgi 设置 django 项目。问题是 wsgi 应用程序失败并出现错误AttributeError: 'Settings' object has no attribute 'ROOT_URLCONF'
,我不明白为什么。当我通过它运行同一个项目时,./manage.py runserver
它工作正常。
项目结构:
/var/www/python/projectname.org/projectname
./core/
./core/wsgi.py
./core/settings/
./__init__.py
./django.py
./extensions.py
./secrets.py
./server.py
./project.py
./app1
./app2
./templates
./static
...
是的,通常的 Django 设置文件被分成几个。这在开发环境中工作得很好,不知道这是否与我在 WSGI 生产环境中遇到的问题有关。
在 python 的控制台中,我可以projectname.core.settings
轻松导入,但它也没有ROOT_URLCONF
内部。
wsgi.py:
import os
import sys
sys.path.append('/var/www/python/projectname.org')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "projectname.core.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
apache虚拟主机配置:
<VirtualHost *:80>
ServerAdmin alex@projectname.org
ServerName projectname.org
DocumentRoot /var/www/python/projectname.org/projectname/core
WSGIScriptAlias / /var/www/python/projectname.org/projectname/core/wsgi.py
<Directory /var/www/python/projectname.org/projectname>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
...
</VirtualHost>
当我尝试projectname.core.settings
在控制台中导入时 - 导入工作正常,但我也无法访问ROOT_URLCONF
. 显然这是相关的,但为什么它可以通过runserver
?以及如何通过 wsgi 或控制台使其工作?