关键词

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

Django的login_required()函数是一个装饰器,它用于保护一个视图或者一个视图函数,在用户未登陆的情况下,会自动重定向到Django默认的登陆页面。本文将详细讲解login_required()函数的使用方法,并为您提供两个实例说明。

login_required()函数的使用方法

login_required()函数必须与视图函数搭配使用,它的语法如下:

from django.contrib.auth.decorators import login_required

@login_required(login_url='/login/')
def my_view(request):
    # 在用户已登陆的情况下该视图直接返回HTTP 200

其中,@login_required()是装饰器,它会检查请求是否来自已认证的用户。如果请求是一个未认证的用户,装饰器会将请求重定向到登陆页面(login_url参数指定的URL)。然后用户可以输入用户名和密码进行认证,认证完成后重定向回来。

示例

下面我们为您提供两个使用login_required()函数的实例,帮您更好的理解它的作用:

实例一:保护视图函数

假设我们有一个视图函数 my_view(),它只能让已登陆的用户访问,否则会被重定向到登录页面。为了保护这个视图函数,我们可以使用 @login_required 装饰器,示例如下:

from django.contrib.auth.decorators import login_required

@login_required(login_url='/login/')
def my_view(request):
    # 在用户已登录的情况下才能请求到这个视图
    # 实现代码

实例二:保护整个URL模式

如果我们有一组共享相同URL前缀的视图函数需要进行登陆认证,这时我们可以使用Django的URLDispatcher来保护整个URL模式,示例如下:

from django.urls import path
from django.contrib.auth.decorators import login_required
from .views import view1, view2, view3

urlpatterns = [
    path('protected/', login_required(view1), name='url1'),
    path('protected/', login_required(view2), name='url2'),
    path('protected/', login_required(view3), name='url3'),
]

在这个例子中,我们给一组路由添加了 login_required 装饰器,这样只有在已登录的情况下才能访问它们。

总结

login_required()函数可以轻松地添加登陆认证功能到任何Django视图或者整个URL模式中,它可以保护敏感或者需要认证的内容。基本语法为 @login_required(login_url='/login/'),其中login_url是重定向的URL,可选参数。

本文链接:http://task.lmcjl.com/news/16190.html

展开阅读全文