Проект развертывания Django-modpython - PullRequest
1 голос
/ 17 июня 2010

Я развертываю проект Django на сервере apache с mod_python в Linux.Я создал структуру каталогов, например: / var / www / html / django / demoInstall, где demoInstall - мой проект.В httpd.conf я поместил следующий код:

<Location "/django/demoInstall">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE demoInstall.settings
    PythonOption django.root django/demoInstall
    PythonDebug On
    PythonPath "['/var/www/html/django'] + sys.path"

</Location>

Это вызывает у меня среду django, но проблема в том, что URL, упомянутые в urls.py, не работают правильно.

В моем файле url я упомянул URL как:

 (r'^$', views.index),

Теперь в браузере я помещаю URL как: http://domainname/django/demoInstall/, и я ожидаю, что будет вызван views.index,Но я думаю, что он ожидает, что URL будет только: http://domainname/.

Когда я изменяю отображение URL-адреса на:

  (r'^django/demoInstall$', views.index),

, он работает нормально.Пожалуйста, предложите, так как я не хочу менять все отображения в файле конфигурации url.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 17 июня 2010

Существует довольно простой способ обойти это, используя только django, не касаясь apache.

Переименуйте ваш urls.py во что-то другое, например, site_urls.py

Затем создайте новый urls.py, который включает в себя

from django.conf.urls.defaults import *

urlpatterns = patterns('',
    (r'^django/demoInstall/', include('site_urls.py')),
)

Это будет гарантировать, что вся реверсирование URL тоже будет работать.

0 голосов
/ 22 июня 2010

Это должно быть:

PythonOption django.root /django/demoInstall

То есть, должно соответствовать под URL в директиве Location.

Вы не должны использовать этот префикс в urls.py.

...