当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。