Приложение Django работает на сервере разработки, но я получаю 404 на Apache - PullRequest
0 голосов
/ 07 января 2011

Я думал, что один и тот же механизм будет работать как для сервера разработки, так и для Apache в качестве моего веб-сервера, но я в настоящее время очень запутался.

Я могу получить доступ к URL при использовании сервера разработки Django следующим образом

__http://devserver/my_application/

Когда я переключаю свой веб-сервер на Apache, я получаю ошибки Django 404 для всех записей URLs.py.

пытается получить доступ __ http://devserver/ возвращает следующее

Using the URLconf defined in antrum.urls, Django tried these URL patterns, in this order:
^my_application/$
^my_application/?page=(?P<page>\d+)
^my_application/new
^my_application/(?P<candidate_id>\d+)/$
^my_application/(?P<candidate_id>\d+)/update/$
^my_application/(?P<candidate_id>\d+)/delete/$
^my_application/search/$
^admin/doc/
^admin/
The current URL, , didn't match any of these.

Попытка доступа http://devserver/my_application/ приводит к следующему выводу

{'path': u'my_application/'}

Я, вероятно, делаю глупую ошибку, но не могу сейчас это увидеть. Что я мог пропустить, чтобы проверить?

Вот моя конфигурация Apache

<Location "/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE project.settings
    PythonOption django.root /
    PythonDebug On
    PythonPath "['/home/user/','/home/user/project/'] + sys.path"
</Location>

<Location "/media/">
    SetHandler None
</Location>  

Вот мои выводы:

  • Переключение на manage.py runserver решает мою проблему
  • Apache Error.log не имеет записей
  • Когда я устанавливаю переменную Environment для pythonpath и использую Python CLI, я могу получить доступ к своим моделям, что также IMHO оставляет опцию python path из этого
  • __ http://devserver/my_application и __ http://devserver/my_appTYPO выдают одно и то же сообщение об ошибке с разными выводами {u'path ': ...}

Ответы [ 2 ]

1 голос
/ 08 января 2011

Не устанавливайте переменную django.root при монтировании в корне веб-сайта. Это следует использовать только при монтировании по дополнительному URL.

1 голос
/ 07 января 2011

попробуйте использовать mod_wsgi вместо modpython. если у вас есть те же проблемы, то пересмотрите ваши представления, особенно объект HttpResponse (аргумент mimetype). В любом случае, modpython больше не будет поддерживаться после выпуска django 1.3, я думаю, что лучше оставить навсегда modpython

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...