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,可选参数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Django的 login_required() 函数:装饰器,限制未登录用户访问视图 - Python技术站