如何在 Django 中使用 URL 包装器来实现用户身份验证?

2023-04-11 00:00:00 用户 来实现 身份验证

要在 Django 中使用 URL 包装器来实现用户身份验证,可以使用 Django 自带的装饰器 @login_required。该装饰器可以将视图函数包装起来,并且只有已登录用户才能访问被包装的视图函数。

具体实现步骤如下:

  1. views.py 中定义视图函数,例如:
from django.contrib.auth.decorators import login_required
from django.shortcuts import render

@login_required
def my_view(request):
    return render(request, 'my_template.html')
  1. urls.py 中配置 URL 路由器,并将视图函数与 URL 匹配,如下所示:
from django.urls import path
from .views import my_view

urlpatterns = [
    path('my-url/', my_view, name='my_view'),
]

在上述代码中,my_view 视图函数被 @login_required 装饰器包装,因此只有已登录用户才能访问 my_view 视图。

其中,第一个参数 'my-url/' 是 URL 的路径,第二个参数 my_view 是视图函数的名称,第三个参数 'my_view' 是视图函数的别名,可以在模板中使用。

这样,当用户访问 /my-url/ 路径时,如果用户未登录,则会被重定向到登录页面进行身份验证,验证通过后才能访问 my_view 视图函数。

示例代码:

# views.py

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

@login_required
def my_view(request):
    return render(request, 'my_template.html')
# urls.py

from django.urls import path
from .views import my_view

urlpatterns = [
    path('my-url/', my_view, name='my_view'),
]
<!-- my_template.html -->

{% extends 'base.html' %}

{% block content %}
    <h1>Welcome to pidancode.com!</h1>
{% endblock %}

相关文章