Моя форма с кнопками выбора языка и кнопкой обновления.Форма обновления клиента реализуется с помощью форм и представлений 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 /