Найти - Пользователи
Полная версия: Переменная DJANGO_SETTINGS_MODULE при развертывании с Apache
Начало » Django » Переменная DJANGO_SETTINGS_MODULE при развертывании с Apache
1
Ajunta
В мануале DjangoBook в главе про развертывание сказано:

<Location “/”>
SetHandler mod_python
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonDebug On
</Location>
Вместо mysite.settings необходимо вписать имя модуля настроек Django для вашего сайта.
Никак не могу нагуглть внятного объяснения что это за настройки Django в переменной DJANGO_SETTINGS_MODULE? Где они лежит по-дефолту хотя бы…
lizzard
Может это myproject/settings.py?
Ajunta
lizzard
Может это myproject/settings.py?
Пробовал указывать абсолютным и относительным путем. В любом случае конец лога ошибки заканчивается на
ImportError: Could not import settings ‘settings.py’ (Is it on sys.path? Does it have syntax errors?): No module named settings.py
Сам файл settings.py не менял.
Александр Кошелев
Ajunta
Пробовал указывать абсолютным и относительным путем. В любом случае конец лога ошибки заканчивается на
Путь не надо указывать в DJANGO_SETTINGS_MODULE. Там должен быть import path к настройкам, т.е. имя mysite.settings должно импортироваться. Скорей всего у вас просто не указана директория где лежит проект в переменной $PYTHONPATH.
lizzard
У меня вроде работало с таким конфигом:
<Location “/mpg/”>
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mpg.settings
PythonOption django.root /mpg
PythonDebug On
PythonPath " + sys.path"
</Location>
Ajunta
Несколько подробнстей:
сайт (__init__.py manage.py settings.py и т.д.) располагается в /home/creo/www/testhead т.е. не в корне для апача.

Настройки в apache2.conf:
<Location "/testhead/">
SetHandler mod_python
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE settings
PythonDebug On
PythonPath "['/home/creo/www/testhead'] + sys.path"
</Location>
Пытаюсь зайти по адресу: http://localhost:9980/testhead/ выдается отладочная страница с ошибкой:
ImportError at /testhead/
No module named testhead.urls
Для теста действовал по книге DjangoBook, создал файл:
$ cat test.py
from django.http import HttpResponse
import datetime

def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
Далее отредактировал схему URL:
$ cat urls.py
from django.conf.urls.defaults import *
from testhead.test current_datetime

urlpatterns = patterns('',
(r'^time/$', current_datetime),
)
Почему же он говорит, что схемы нет? Файл urls.py есть в той же директории, что и настройки settings.py, однако после правки конфига Apache настройки судя по всему подхватились нормально.
PooH
Ajunta
$ cat urls.py
from django.conf.urls.defaults import *
from testhead.test current_datetime

urlpatterns = patterns('',
(r'^time/$', current_datetime),
)
У вас ошибка в urls.py, во второй строчке.
Ajunta
PooH
У вас ошибка в urls.py, во второй строчке.
Исправил на:
$ cat urls.py
from django.conf.urls.defaults import *
from testhead.test import current_datetime

urlpatterns = patterns('',
(r'^time/$', current_datetime),
)
Однако ситуация не изменилась - по прежнему утверждает, что “ImportError: No module named testhead.urls” :-(
slivlen
Ajunta
Однако ситуация не изменилась - по прежнему утверждает, что “ImportError: No module named testhead.urls” :-(
И правильно делает. Проект лежит в /home/creo/www/testhead, который и прописан в sys.path. Соответственно при импортировании testhead.urls будет попытка импортировать /home/creo/www/testhead/testhead/urls.py, которого как раз и нет.
Исправь настройки:
SetEnv DJANGO_SETTINGS_MODULE testhead.settings
PythonDebug On
PythonPath "['/home/creo/www/'] + sys.path"
Ajunta
slivlen
Исправь настройки:
Вот оно! Ну наконец-то заработало… Спасибо, slivlen!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB