совершенно новый в программировании & django, так что будьте осторожны со мной :) Я только что реализовал (используя документы) ниже форму с раскрывающимся списком для смены языка:
<form action="{% url 'set_language' %}" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="{{request.get_full_path }}"/>
<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 type="submit" value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected="selected"{% endif %}>
{{ language.name_local }} ({{ language.code }})
</option>
{% endfor %}
</select>
<input type="submit" value={% trans "GO" %} />
</form>
Все работает так же, как Ожидается, поэтому я могу использовать выпадающий список, чтобы сделать переключение. В качестве value = "{{request.get_full_path}}" я вернусь к ссылке, где я был (что нормально); все еще только для учебной цели, я хотел бы изменить это и быть перенаправлен на ссылку с кодом lang_code в префиксе. Я заметил, что функция префикса уже установлена -> http://127.0.0.1: 8000 / ru / Django_book_app_1 / & http://127.0.0.1: 8000 / fr / Django_book_app_1 / работает просто отлично.
Как я могу реализовать эту уже имеющуюся функцию, все еще используя раскрывающийся список для изменения языка (перенаправить на префиксную ссылку при переключении)?
На данный момент я попробовал это:
URL:
path('<lc>/', views_second.IndexView.as_view(), name='index')
HTML:
<input name="next" type="hidden" value="{% url 'polls:index' lc=request.LANGUAGE_CODE %}"/>
, но он не работает должным образом по очевидным причинам (запрос отправляет текущий l c, который является противоположностью языка. выбран код, результат http://127.0.0.1: 8000 / Django_book_app_1 / fr / с языком engli sh на странице и ссылкой http://127.0.0.1: 8000 / Django_book_app_1 / ru / с французским языком на стр. ).
Большое спасибо!