[英]Possible me to custom dynamic login_url for Django @login_required?
做這個裝飾器@login_required
基本方法是這樣的;
@login_required(login_url='/path/to/login/')
def foobar(request):
# do stuff
在這里,我想將login_url
這個值login_url
為來自request.GET.next
動態路徑。 我有可能嗎?
更新 ,我試過這個,但當然這應該返回一個錯誤(request)
沒有定義,因為在參數之前采取。
def dynamic_url(request):
get_next = request.GET.get('next')
if get_next:
return get_next
return '/accounts/login/'
@login_required(login_url=dynamic_url(request))
def foobar(request):
# do stuff
我想有幾種方法可以做到這一點:
首先不是使用裝飾器並在視圖函數內檢查你的狀態,如下所示:
def foo(request):
if not request.user.is_authenticated:
# Do your staffs
# get_next = request.GET.get('next')
# if get_next:
# return get_next
# return ''
第二種方式是我沒有測試的方法:正如我在這里看到的, django login_requred()裝飾器可以獲得一個名為function的變量 ,並將裝飾器響應傳遞給此函數(如果不是None)嘗試將dynamic_url函數傳遞給login_required()裝飾師這樣:
login_required(function=dynamic_url)
def foo(request):
pass
並告訴我們結果:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.