當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python Django login_required用法及代碼示例

本文介紹 django.contrib.auth.decorators.login_required 的用法。

聲明

login_required(redirect_field_name='next', login_url=None)

作為快捷方式,您可以使用方便的 login_required() 裝飾器:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    ...

login_required() 執行以下操作:

  • 如果用戶未登錄,則重定向到 settings.LOGIN_URL ,在查詢字符串中傳遞當前絕對路徑。示例:/accounts/login/?next=/polls/3/
  • 如果用戶已登錄,則正常執行視圖。視圖代碼可以自由假設用戶已登錄。

默認情況下,成功驗證後用戶應重定向到的路徑存儲在名為 "next" 的查詢字符串參數中。如果您希望為此參數使用不同的名稱, login_required() 采用可選的 redirect_field_name 參數:

from django.contrib.auth.decorators import login_required

@login_required(redirect_field_name='my_redirect_field')
def my_view(request):
    ...

請注意,如果您為 redirect_field_name 提供值,您很可能還需要自定義登錄模板,因為存儲重定向路徑的模板上下文變量將使用 redirect_field_name 的值作為其鍵,而不是 "next"(默認)。

login_required() 還采用可選的 login_url 參數。例子:

from django.contrib.auth.decorators import login_required

@login_required(login_url='/accounts/login/')
def my_view(request):
    ...

請注意,如果您不指定 login_url 參數,則需要確保 settings.LOGIN_URL 和您的登錄視圖正確關聯。例如,使用默認值,將以下行添加到您的 URLconf:

from django.contrib.auth import views as auth_views

path('accounts/login/', auth_views.LoginView.as_view()),

settings.LOGIN_URL 還接受視圖函數名稱和命名的 URL 模式。這允許您在 URLconf 中自由地重新映射您的登錄視圖,而無需更新設置。

注意

login_required 裝飾器不會檢查用戶的 is_active 標誌,但默認的 AUTHENTICATION_BACKENDS 會拒絕非活動用戶。

也可以看看

如果您正在為 Django 的管理員編寫自定義視圖(或需要與內置視圖使用相同的授權檢查),您可能會發現 django.contrib.admin.views.decorators.staff_member_required() 裝飾器是 login_required() 的有用替代品。

相關用法


注:本文由純淨天空篩選整理自djangoproject.com大神的英文原創作品 django.contrib.auth.decorators.login_required。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。