想要在Django项目中全局启用登陆验证 login_required
,需要经过以下步骤:
1. 导入 login_required
函数
login_required
函数位于 django.contrib.auth.decorators
模块中,需要先导入此模块。在 Django 的视图函数中使用 login_required
装饰器,可以达到需要登录才能访问视图的目的。
from django.contrib.auth.decorators import login_required
2. 配置全局URL
在项目的 urls.py
中配置全局 urls
。定义了一个名为 urlpatterns
的列表,将所有需要做登陆验证的 url
定义到该列表下,并用 login_required
装饰器将其包裹。
from django.urls import path
from myapp import views
from django.contrib.auth.decorators import login_required
urlpatterns = [
path('', login_required(views.index), name='index'),
path('detail', login_required(views.detail), name='detail'),
# 其他需要登陆验证的 url
]
此时,访问上述任何一个被 login_required
保护的 url
,都会先跳转至 Django 默认的登录页面,登录成功后方可访问。
示例
from django.urls import path
from blog import views
from django.contrib.auth.decorators import login_required
urlpatterns = [
path('', views.index, name='index'),
path('post/<int:pk>', views.post_detail, name='post_detail'),
path('edit/post/<int:pk>/', login_required(views.PostEditView.as_view()), name='post_edit'),
]
上述示例代码定义了三个 url
,其中 /edit/post/<int:pk>/
需要做登陆验证。如果用户未登录,便会跳转到默认的Django登录页面,登录成功后才能访问修改文章的页面 /edit/post/<int:pk>/
。
from django.urls import path
from myapp import views
from django.contrib.auth.decorators import login_required
urlpatterns = [
path('', login_required(views.index), name='index'),
path('detail', login_required(views.detail), name='detail'),
# 其他需要登陆验证的 url
]
上述示例代码定义了两个 url
,index
和 detail
页面都需要做登陆验证。如果用户未登录,便会跳转到默认的Django登录页面,登录成功后才能访问这两个页面。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django全局启用登陆验证login_required的方法 - Python技术站