簡體   English   中英

我可以為Django @login_required自定義動態login_url嗎?

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

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