Этот блог объясняет решение (при условии, что используется mod_wsgi, с nginx / uwsgi решение аналогично , очевидно, в nginx / uwsgi это не обязательно).
Первый параметр WSGIScriptAlias - /sub-url
будет удален из URL-адреса запроса, а остальные будут отправлены в ваше приложение django. Если все URL-адреса вашего Django-приложения начинаются с /sub-url
(которые удаляются mod_wsgi), вы не сможете отображать представления по этим URL-адресам, если только вы не «повторно вставите» /sub-url
в часть пути запроса.
import django.core.handlers.wsgi
_application = django.core.handlers.wsgi.WSGIHandler()
def application(environ, start_response):
#the line below will re-append the sub-url to all urls
environ['PATH_INFO'] = environ['SCRIPT_NAME'] + environ['PATH_INFO']
#this one will make django think that it's the only thing running on the server
environ['SCRIPT_NAME'] = '' # my little addition to make it work
return _application(environ, start_response)
Кроме того, в вашем urls.py все URL должны начинаться с префикса вашего интереса.
Наконец, WSGIScriptAlias должен совпадать с вашим под-URL:
#the below line will "take-out" the sub-url and pass the rest
#to your wsgi script
WSGIScriptAlias /sub-url /path/to/wsgi_script
Где файл /path/to/wsgi_script
должен содержать определение application
, как показано в первом фрагменте кода.
Чтобы сделать настройку "sub-url" явным в Django, эквивалентное исправление пути запроса должно происходить в структуре Django.