Как сделать модель выхода из системы, которая перенаправляет пользователя на домашнюю страницу, сохраняя при этом язык пользователя. Например: /home/fr/ вместо/home/en/?
Как сделать модель выхода из системы, которая перенаправляет пользователя на домашнюю страницу, сохраняя язык пользователя
class LogOut(Page):
def serve(self, request):
# Redirect to /home/fr/ not to /home/en/
return HttpResponseRedirect('????')
Вы можете достичь этого, получив доступ к текущему языку пользователя из запроса и построив URL перенаправления соответствующим образом
Я не знаю, является ли это лучшим, но я нашел решение ниже. Осталось найти, как позволить пользователю оставаться на странице, с которой он вошел в систему, то есть без перенаправления.
#logout
class LogOut(Page):
def serve(self, request):
response = super().serve(request)
active_lang_code = Locale.get_active().language_code
auth_logout(request)
# Redirect to home page
if active_lang_code == "en":
return HttpResponseRedirect('/')
else:
return HttpResponseRedirect('/{0}/'.format(active_lang_code))
return response
Если вы просто переходите на домашнюю страницу, то return HttpResponseRedirect('/')
- это все, что вам нужно. Это перенаправит пользователя на главную страницу, соответствующую его активированной локали. Если этого не происходит, значит, что-то не так с настройками перевода вашего сайта.
Если вам нужен конкретный путь, для корневой страницы сайта:
site = Site.find_for_request(request)
return HttpResponseRedirect(site.root_page.localized.url)