Django под IIS (с HeliconZoo) в виртуальном каталоге - urls resolver работает с путем без имени каталога

У меня есть сайт Django, работающий под IIS с помощью Helicon Zoo. Он расположен в виртуальной директории (поэтому, URL к нему выглядит так http://mysite.com/django).

В моем urls.py шаблоны определены так:

urlpatterns = patterns('',
    ....        
    url(r'^django/status/(?P<product>.*)/$',views.status),
    .... 
)

Но когда я открываю URL как http://mysite.com/django/status/some_productЯ получаю страницу 404 с сообщением:

Using the URLconf defined in urls, Django tried these URL patterns, in this order:
....
The current URL, status/some_product/, didn't match any of these.

Как вы можете видеть, в URL, который тестируется, нет django. И конечно, когда я меняю шаблон так:

url(r'^status/(?P<product>.*)/$',views.status),

Все отлично работает, но если APPEND_SLASH включен (и у меня он включен и установите его в False в settings.py почему-то не помогает) мои запросы вроде http://mysite.com/django/status/some_product перенаправлены на http://mysite.com/status/some_product/,

Итак, вопрос: как я могу настроить Django, чтобы он не выбрасывал имя виртуального каталога?

Что мне нужно знать о том, как включить APPEND_SLASH? Щас просто ставлю APPEND_SLASH = False в settings.py, но без разницы.

Примечание: я почти ничего не знаю о Django и Python и не могу изменить настройку этого сайта (по крайней мере, сейчас).

2 ответа

Решение

Наконец-то я понял, что с ним не так.

Оказалось, что причиной описанного поведения является настройка, предоставляемая по умолчанию файлом web.config:

<add name="django.root" value="%APPL_VIRTUAL_PATH%" />          

После того как я его удалил все стало работать нормально.

Вот некоторая информация, связанная с django.root переменная применяется к Apache.

Я заметил, что у zoofcgi есть два режима работы

с django_settings_module

или с помощью wsgi_app

Поскольку мой проект нуждается во втором (wsgi_app), я заметил, что проблема не была решена только путем установки переменной django.root,

То есть есть ошибка в настройке переменных среды для второго режима. Поэтому я создал проект helicon-zoofcgi, который решает эту ошибку.

Теперь нет необходимости вводить префикс сайта в URL-адресах django, модуль zoofcgi уже решает его в переменных окружения.

Надеюсь, что этот проект кому-нибудь пригодится в будущем.

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