Django держать выпадающий выбранный язык после перезагрузки страницы - PullRequest
3 голосов
/ 07 апреля 2019

У меня есть форма для изменения языков (пока 3 языка), и она работает, за исключением того, что при перезагрузке страницы содержимое меняется на новый язык, но выбранная опция из раскрывающегося списка теряется (вместо этого отображается язык по умолчанию).Как сохранить выбранный язык после перезагрузки страницы?Любая помощь приветствуется

 <form action="{% url 'set_language' %}" method="POST">
            {% csrf_token %}
            <input type="hidden" id="languageSwitcher" name="selected" value="{{ redirect_to}}">
            <select name ="language" id="languageField">
              {% get_available_languages as LANGUAGES %}
              {% get_language_info_list for LANGUAGES as languages %}
              {% for language in languages%}
              <option  value="{{language.code}}" {% if language.code == LANGUAGE_CODE %} selected {% endif %}>
                {{language.name_local}} 
              </option>
              {% endfor %}
            </select>
          <input type="submit" id ="languageSwitcher" value="Change">
          </form>

1 Ответ

1 голос
/ 07 апреля 2019

Чтобы использовать переменную LANGUAGE_CODE в шаблонах, сначала необходимо загрузить i18n.

Поместите эту строку кода в верхней части HTML-шаблона:

{% load i18n %}

Также убедитесь, что i18n включен в ваших настройках и контекстных процессорах:

USE_I18N = True
# ...
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                # ...
                'django.template.context_processors.i18n',
                # ...
            ],
        },
    },
]
...