django - представление set_language с сообщением об ошибке «Страница не найдена» - PullRequest
3 голосов
/ 09 марта 2011

Привет Я внимательно следил за документами по интернационализации для django (используя мезонин на django 1.2.5), и все в порядке, за исключением случаев, когда я использую форму, подобную той, которая есть в документах, для переключения кода языка. как это

<form action="/i18n/setlang/" method="post">
<input name="next" type="hidden" value="/whatever/" />
<select name="language">
    {% for lang in LANGUAGES %}
    <option value="{{ lang.0 }}">{{ lang.1 }}</option>
    {% endfor %}
</select>
<input type="submit" value="Go" />
</form>

с моим urlconf, похожим на это

urlpatterns += patterns("",
    ("^admin/", include(admin.site.urls)),
    ("^", include("mezzanine.urls")),
    (r'^i18n/', include('django.conf.urls.i18n')),

)

когда я переключаю язык и нажимаю кнопку "go", я получаю

        Page Not Found (404)
        Request Method: POST
        Request URL:    http://127.0.0.1:8000/i18n/setlang/
        No Page matches the given query.

Я добавил URL-адреса i18n и промежуточное программное обеспечение локали. Я попробовал его в новом проекте, но не повезло. Есть какие-нибудь подсказки?

1 Ответ

6 голосов
/ 20 марта 2011

Шаблоны мезонина включают в себя «поймать все» для страниц, поэтому ничего под ним никогда не будет найдено. Чтобы ваши шаблоны работали, вам просто нужно поменять два последних шаблона в вашем urls.py на следующий:

urlpatterns += patterns("",
    ("^admin/", include(admin.site.urls)),
    (r'^i18n/', include('django.conf.urls.i18n')),
    ("^", include("mezzanine.urls")),
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...