Запуск учебного примера 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
если вы сделали последнее.
РЕДАКТИРОВАТЬ:
РЕДАКТИРОВАТЬ 2:
Как установить модуль настроек Django
РЕДАКТИРОВАТЬ 3:
Модуль настроек должен быть модулем, а не именем файла. И если это 'settings'
тогда вам не нужно устанавливать его.