Как сделать модель выхода из системы, которая перенаправляет пользователя на домашнюю страницу, сохраняя при этом язык пользователя. Например: /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)
Вернуться на верх