[英]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.