2012-05-29 4 views
7

Мой прокси-сервер (Nginx публичный порт 80) Джанго (gunicorn WSGI локальный порт 8000) отсекает путь к приложению «/ приложение» поэтому запросы на http://server/app/hello появляется Джанго, как /hello и запросы на http://server/app/admin появляется django как /admin.Джанго префикс на всех сгенерированных адресов

Проблема заключается в том, что админ-сайт генерирует выходные данные с абсолютными URL-адресами, такими как <form action="/admin/"... на экране входа в систему. Таким образом, пользователь видит экран входа администратора, но он отправляет http://server/admin, которого не существует. (Я как бы надеялся, что он будет использовать относительные URL-адреса и работать в любом месте.)

Каков самый простой способ получить страницы администрирования для универсального добавления «/ app», например, form action="/app/admin/" ко всем URL-адресам, которые он генерирует в выводе страницы? Я надеюсь на то, что встроено в Django, как простое определение, и не нужно создавать специальные фильтры, а затем переписывать шаблоны, чтобы использовать их, но я не могу найти его.

ответ

0

Простейший способ это написать свой собственный WSGI диспетчеру, как один ниже

def application(environ, request_response): 
    # do whatever you want with path 

    sys.path.append(path_to_django_project) 
    os.environ['DJANGO_SETTINGS_MODULE'] = 'proj_name.settings' 

    # pass control to django 
    import django.core.handlers.wsgi 
    app_entry_point = django.core.handlers.wsgi.WSGIHandler() 
    return app_entry_point(environ,request_response) 
Смежные вопросы