Я хочу добавить код языка в путь, чтобы он мог быть / language_code - PullRequest
1 голос
/ 27 мая 2020

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

<form action="{% url 'home' %}" method="post" id="languageForm">{% csrf_token %}
                                            <input name="next" type="hidden" value="{{ redirect_to }}">
                                            <select name="language" id="selectLanguage" onchange="this.form.submit()"
                                                    style="height: 500px;">
                                                {% 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>

Я использую этот выбор, чтобы выбрать доступные языки, и мой шаблон пути следующий:

`path('home', views.home, name='home'),` so some home I want it to be 'home/en' for example so how can I do so?

1 Ответ

0 голосов
/ 28 мая 2020

Вы можете использовать сопоставление путей регулярных выражений

from django.urls import re_path

urlpatterns = [
    re_path(r'^home/(?P<language>\w{2})$',views.home,name='home')
]

И в вашей функции views.home вы должны взять дополнительный аргумент ключевого слова с именем language для вашего двухсимвольного кода языка .

Причина, по которой вы должны использовать регулярное выражение, заключается в том, что новая функция django (введенная в 2.0) path не позволяет вам иметь sla sh, когда он анализирует URL. Если вы хотите использовать что-то вроде home_en, вам не нужно использовать re_path.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...