详解Django的 login_required() 函数:装饰器,限制未登录用户访问视图

  • Post category:Python

login_required() 是 Django 中一个常用的装饰器函数,用于限制只有用户登录后才能访问特定的视图函数。

作用

login_required() 函数的作用就是控制视图函数的访问权限,当用户未登录时,访问被装饰的视图函数将会被重定向到登录页面。

使用方法

首先要在视图函数的头部导入该装饰器 from django.contrib.auth.decorators import login_required

然后在需要进行验证的视图函数上添加 @login_required 装饰器,即可限制只有登录的用户才能访问该视图函数。

例如:

from django.contrib.auth.decorators import login_required
from django.shortcuts import render

@login_required
def my_account(request):
    return render(request, 'my_account.html')

以上代码将会把 my_account 视图函数装饰成一个只能登录用户访问的视图函数。

实例说明

示例一

用户只有登陆后才能查看自己的账户信息。在 views.py 中加入以下代码:

from django.contrib.auth.decorators import login_required
from django.shortcuts import render

@login_required
def account(request):
    # 该视图允许已登录用户访问
    return render(request, 'account.html')

示例二

用户只有在已经登陆后才能对商品进行评论。在 views.py 中加入以下代码:

from django.contrib.auth.decorators import login_required
from django.shortcuts import render

@login_required
def comment(request):
    # 该视图允许已登录用户访问
    return render(request, 'comment.html')

以上代码将会把 comment 视图函数装饰成一个只能登录用户访问的视图函数。