Локаль из приложения django не меняется

Я новичок в Django, и мне нужно создать систему I18N. У меня есть этот url.py:

from django.contrib import admin
from django.urls import path, include
from . import views
urlpatterns = [
    path('', views.index, name='home'),
    path(r'^i18n/', include('django.conf.urls.i18n')),
]

И я сделал этот html, чтобы изменить язык:

{% load i18n %}
<form action="/i18n/setlang/" method="post">
    {% csrf_token %}
    <input name="next" type="hidden" value="{{request.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 value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected="selected"{% endif %}>
                {{ language.name_local }} ({{ language.code }})
            </option>
        {% endfor %}
    </select>
    <input type="submit" value="Go" />
</form>

Но когда я нажимаю кнопку «Перейти», сервер отвечает: Страница не найдена (404). Текущий путь i18n/setlang/ не соответствует ни одному из них. Я продолжаю использовать Python 3.6 и Django 2.0.4.

И я понятия не имею, как я могу это решить.


person Dimmy Magalhães    schedule 04.07.2018    source источник


Ответы (1)


Проблема была здесь:

path(r'^i18n/', include('django.conf.urls.i18n')),

Я отрезал г'^':

path('i18n/', include('django.conf.urls.i18n')),

и работает!

person Dimmy Magalhães    schedule 04.07.2018