簡體   English   中英

Django設置LOGIN_REDIRECT_URL基於語言的動態

[英]Django settings LOGIN_REDIRECT_URL dynamic based on language

假設我有LOGIN_REDIRECT_URL ='/ foo / bar /'並且我在http://127.0.0.1/en/login/上並且成功登錄。 我將被重定向到http://127.0.0.1/foo/bar/,導致丟失語言前綴。 為了保持網址中的語言代碼,我該怎么辦? 當然,我希望所有其他語言代碼也能正常工作,就像這樣:

http://127.0.0.1/en/login/ -> http://127.0.0.1/en/foo/bar/
http://127.0.0.1/login/ -> http://127.0.0.1/foo/bar/
http://127.0.0.1/ro/login/ -> http://127.0.0.1/ro/foo/bar/

在這種情況下,您可以擴展Django的LoginView並覆蓋get_success_url方法。

像這樣:

from django.contrib.auth.views import LoginView
from django.utils.translation import get_language



class CustomLoginView(LoginView):
    def get_success_url(self):
        # lang = get your language from the URL (it'd be helpful if you post your URLs in order to help better) or you can use like this:
        lang = get_language()
        url = '{}/{}/login'.format(yourbaseurl, lang)
        return url

假設您使用框架中的Django auth和LoginView ,則可以參數化URL以在登錄后重定向到該URL。如果未指定LOGIN_REDIRECT_URL則它是一個后備。

LoginView屬性稱為next 可以使用上一頁中的參數(例如?next=<your_url>來設置next URL。 只是不要忘記使用is_safe_url()進行django.utils.http

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM