Хостинг Django от «Джино»
Table of contents

Представление set_language

Для вашего удобства Django поставляется с представлением django.views.i18n.set_language, которое устанавливает языковую настройку пользователя и перенаправляет браузер обратно на предыдущую страницу.

Для активации этого представления добавьте следующую строку в схему URL:

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

Следует отметить, что данный пример делает это представление доступным на /i18n/setlang/.

Это представление вызывается через метод GET[15] с указанием параметра language в строке запроса. Если поддержка сессий активна, представление сохраняет информацию о выбранном языке в сессии пользователя. В противном случае, сохранение производится в cookie django_language.

После определения выбора пользователя Django перенаправляет браузер, следуя алгоритму:

  • Проверяется параметр next в строке запроса.

  • Если такого параметра нет или он пуст, проверяется заголовок Referer.

  • Если заголовок пуст (браузер мог запретить его отправку), тогда пользователь будет перенаправлен на корень сайта.

Ниже представлен пример HTML шаблона:

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



[15] В Django 1.x изменили на POST.

alerion 1 year, 2 months ago
Answer Link

Спасибо за заметку. Как раз скоро придется это использовать.

rty65tt 1 year, 2 months ago
Answer Link

Внимание!!!
В django 1.0 и выше заменили GET на POST!
<form action="/i18n/setlang/" method="post">


Ищем Python программистов

Found misprint?
Select it with the mouse and hit Enter
Ctrl-Enter
Processed:
33 1 199 25


The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!

We are glad to hear your questions, comments or suggestions!
(Open in new tab)

Users number: 601

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
ЯМ:41001223475816


© 2008-2012 Ruslan Popov @ gmail.com Powered by Django 1.2.5