Найти - Пользователи
Полная версия: После logout языковые настройки обнуляются
Начало » Django » После logout языковые настройки обнуляются
1
vaxXxa
Настроил i18n. Все работает нормально, но вот столкнулся с проблемой.

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

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

Update: Все дело а HttpResponseRedirect(). Не пойму, как по другому сделать редирект.
vaxXxa
Ну, нашел решение. Взял с 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
Делает то, что надо. Возможно сильно грубо. Если есть идеи - прошу в студию.
Ferroman
А ответ один:
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().
Просто сохраняйте установленный язык в переменной, и устанавливайте его в сессию после того, как пользовать разлогинится.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB