Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » После logout языковые настройки обнуляются [RSS Feed]

#1 Янв. 31, 2010 02:43:16

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

После logout языковые настройки обнуляются

Настроил i18n. Все работает нормально, но вот столкнулся с проблемой.

Делаю логаут пользователя:

def logout_view(request):
logout(request)
return HttpResponseRedirect('/')
После логаута язык сбрасывается на начальный (тот, который ему говорит сам браузер).
Не сильно понял, почему это происходит. Подскажите, плз.
И еще вопрос: персональный выбор языка для пользователся сохраняется где-то в базе или где-то еще, или это надо делать руками?
Имею ввиду, что если кто-то залогинился, выбрал для себя удобный ему язык, то после выхода, и залогина еще раз - будет ли выбран его язык автоматом?

Спасибо за ответ.



Офлайн

#2 Фев. 2, 2010 13:46:29

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

После logout языковые настройки обнуляются

Может потому что, когда юзер активный, то в сессии сохраняются его настройки. А когда логаут, то сессия юзера удаляется, и тогда все настройки обнулются.

Update: Все дело а HttpResponseRedirect(). Не пойму, как по другому сделать редирект.



Отредактировано (Фев. 2, 2010 13:57:32)

Офлайн

#3 Фев. 2, 2010 14:45:19

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

После logout языковые настройки обнуляются

Ну, нашел решение. Взял с django.views.i18n
Вот, что вышло:

def logout_view(request):
next = request.META.get('HTTP_REFERER', None) or '/'
response = HttpResponseRedirect(next)
logout(request)
lang_code = request.LANGUAGE_CODE
if lang_code and check_for_language(lang_code):
if hasattr(request, 'session'):
request.session['django_language'] = lang_code
else:
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
return response
Делает то, что надо. Возможно сильно грубо. Если есть идеи - прошу в студию.



Отредактировано (Фев. 2, 2010 14:46:32)

Офлайн

#4 Фев. 2, 2010 16:19:11

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

После logout языковые настройки обнуляются

А ответ один:

Changed in Django 1.0: Calling logout() now cleans session data.

When you call logout(), the session data for the current request is completely cleaned out. All existing data is removed. This is to prevent another person from using the same web browser to log in and have access to the previous user's session data. If you want to put anything into the session that will be available to the user immediately after logging out, do that after calling django.contrib.auth.logout().
Просто сохраняйте установленный язык в переменной, и устанавливайте его в сессию после того, как пользовать разлогинится.

Офлайн

  • Начало
  • » Django
  • » После logout языковые настройки обнуляются[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version