Django localeURL, когда WSGIScriptAlias является ПРЕФИКСОМ /

Введение

Я Получил вопрос о localeURL использовании. Все работает отлично для меня с URL как это: http://www.example.com/

  • Если я ввожу http://www.example.com/ в строке поиска, это поворачивается правильно в http://www.example.com/en/, например.

  • Если я использую представление change_locale, это также в порядке (т.е. изменение www.example.com/en/ в www.example.com/fr/).

проблема

Но мое приложение использует апача в качестве сервера с mod_wsgi. httpd.conf сценарий содержит эту строку:

WSGIScriptAlias /MY_PREFIX /path/to/django/app/apache/django.wsgi

это дает URL как это:
http://www.example.com/MY_PREFIX/

Та же проблема произошла при представлении change_locale. Я изменил этот код для управления этим префиксом (хранилище в настройках. SERVER_PREFIX):

    def change_locale(request) :
    """
    Redirect to a given url while changing the locale in the path
    The url and the locale code need to be specified in the
    request parameters.
    O. Rochaix; Taken from localeURL view, and tuned to manage :            
        - SERVER_PREFIX from settings.py
    """
    next = request.REQUEST.get('next', None)
    if not next:
        next = request.META.get('HTTP_REFERER', None)
    if not next:
        next = settings.SERVER_PREFIX + '/'

    next = urlsplit(next).path

    prefix = False
    if settings.SERVER_PREFIX!="" and next.startswith(settings.SERVER_PREFIX) :
        prefix = True
        next = "/" + next.lstrip(settings.SERVER_PREFIX) 

    _, path = utils.strip_path (next)

    if request.method == 'POST':
        locale = request.POST.get('locale', None)
        if locale and check_for_language(locale):
            path = utils.locale_path(path, locale)

    if prefix :
        path = settings.SERVER_PREFIX + path

    response = http.HttpResponseRedirect(path)
    return response

с этим специализированным представлением я могу правильно изменить язык, но я не уверен, что это - правильный способ сделать материал.

Вопрос

  1. в httpd.conf при использовании WSGIScriptAlias с ПРЕФИКСОМ / (т.е. "/Блог"), сделайте нам нужно на стороне Python для использования переменной (здесь настройки. SERVER_PREFIX) то соответствие WSGIScriptAlias? я использую его для MEDIA_URL и другого материала, но возможно существует некоторая конфигурация, чтобы сделать, чтобы заставить его работать "автоматически", не имея необходимость управлять этим на стороне Python

  2. Вы думаете, что это специализированное представление (change_locale) правильный путь должно управлять этой проблемой? Или есть ли некоторый автоволшебный материал что касается 1.?

  3. Это не решает проблему, если я ввожу адрес (http://www.example.com/MY_PREFIX/) в строке поиска. Если настройка будет способом пойти, то я изменю это также, но я думаю, что существует лучшее решение!

8
задан Cœur 31 December 2016 в 06:56
поделиться