set_lanuguage не меняет язык веб-страницы enitre и пропускает перенаправления по представлениям - PullRequest
0 голосов
/ 11 октября 2018

Моя форма с кнопками выбора языка и кнопкой обновления.Форма обновления клиента реализуется с помощью форм и представлений django, однако выбор языка напрямую реализуется в html-файле, используя следующий код:

{% load i18n %}

<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
    <input name="next" type="hidden" value="{{ redirect_to }}" />
    <select name="language">
        {% get_current_language as LANGUAGE_CODE %}
        {% 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 }} ({{ language.code }})
            </option>
        {% endfor %}
    </select>
    <input type="submit" value="Go" />
</form>

1: изображение формы веб-страницы

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

Я поместил соответствующие контекстные процессоры и промежуточное программное обеспечение локали, где это должно быть в файле настроек.

Мой корневой urlConf указан ниже:

urlpatterns = [
    url(r'^', include('custupdate.urls')),
    url(r'^i18n/', include('django.conf.urls.i18n')),
]

urlpatterns += i18n_patterns(
    url(r'^', include('custupdate.urls')),

Мой URL-адрес приложения указан:

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^personBasic', views.person_detail, name='person_detail'),
    url(r'^licenseeBasic', views.licensee_detail, name='licensee_detail'),
    url(r'^address', views.address, name='address'),
    url(r'^contact', views.contact, name='contact'),
    url(r'^email', views.email, name='email'),
]

Каждый мой URL, например, personBasic, подключен к соответствующему представлению ипредставление перехвачено соответствующей формой.

Теперь, когда я вписываю следующий URL в адресную строку и нажимаю ввод http://mycompany.com/custupdate Из-за указанных выше конфигураций URL переходит в индексное представление, которое перенаправляет на следующий URL http://mycompany.com/custupdate/personBasic и изображение 1 отображается в браузере.Поэтому при выборе любого языка снова отображается та же страница без изменения языка.

Когда я проверяю элемент в браузере на предмет наличия какой-либо языковой кнопки при ее нажатии, вместо этого я получаю следующий URL-запрос http://mycompany.com/custupdate/i18n/setlang/

из http://mycompany.com/custupdate/personBasic/i18n/setlang/

Вопрос в том, когда языковые кнопки нажимаются, не должен ли весь URL-адрес в адресной строке отображаться как переведенная версия.Что бы то ни было после того, как custupdate как-то пропущено, а i18n / setlang добавляется после custupdate, где я ожидаю, что это будет так:i18n / setlang /

1 Ответ

0 голосов
/ 18 октября 2018

Измените свой корневой URLconf следующим образом:

urlpatterns = [
    url(r'^i18n/', include('django.conf.urls.i18n')),
]

urlpatterns += i18n_patterns(
    url(r'^', include('custupdate.urls')),
)

Кроме того, внутри вашей формы полностью удалите скрытый ввод с именем next.Вы не определили переменную redirect_to.

Также убедитесь, что у вас установлено промежуточное ПО в правильном порядке .

...