Запуск учебного примера Django с mod_wsgi?

Я установил wsgi (mod_wsgi) и мог запустить простое приложение, вызвав http://localhost/myapp.

WSGIScriptAlias ​​/myapp /Library/WebServer/Documents/wsgi/scripts/myapp.wsgi
def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World! WSGI working perfectly!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

Как я могу запустить пример Django?

Я нашел этот пример, который имеет простой пример.

import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'my.settings' # ???

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
мой сайт/
    __init__.py
    manage.py
    settings.py
    urls.py

Django сгенерировал три файла python, и я вижу файл settings.py с информацией о настройке. Проект находится в каталоге /ABC/DEF/mysite.

Я изменил код следующим образом и назвал его myapp.wsgi.

import os
import sys

sys.path.append('/ABC/DEF/mysite') 
sys.path.append('/ABC/DEF')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Несмотря на то, что я мог запустить оригинальный пример django из учебника, в котором используется "python manage.py runserver 8080", я получил ошибку при запуске модифицированного примера с mod_wsgi.

Файл apache2/log имеет следующее.

[Ср 24 ноября 09:02:41 2010] [ошибка] [клиент 127.0.0.1] ImportError: Не удалось импортировать настройки "mysite.settings" (это в sys.path? Есть ли ошибки синтаксиса?): Модуль не назван mysite.settings

Насколько я знаю, имя каталога / проекта - mysite, и у него есть settings.py. И каталог находится в sys.path. Итак, я не знаю, почему mysite.settings не найден.

Что не так с моим myapp.wsgi?

РЕШИТЬ

Следующий код работает нормально. И еще одна вещь, которую я изменил, это то, что проект django не должен находиться в моем домашнем каталоге, когда я переместил проект в каталог www doc, все работает нормально.

import os
import sys

mysite = 'SOMEWEHRE/django'
if mysite not in sys.path:sys.path.insert(0,mysite)
mysite = 'SOMEWEHRE/scripts'
if mysite not in sys.path:sys.path.insert(0,mysite)

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

1 ответ

Решение

Что вам нужно сделать, это добавить либо каталог проекта, либо каталог, в котором находится проект sys.path, а затем укажите настройки mysite.settings если вы сделали последнее.

РЕДАКТИРОВАТЬ:

"Настройки Django"

РЕДАКТИРОВАТЬ 2:

Как установить модуль настроек Django

РЕДАКТИРОВАТЬ 3:

Модуль настроек должен быть модулем, а не именем файла. И если это 'settings' тогда вам не нужно устанавливать его.

Другие вопросы по тегам