0

我正在通过 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 或控制台使其工作?

4

0 回答 0