Django 使用 @login_required 实现登录验证与跳转

方予
方予
发布时间:2026-10-12| 2人浏览过
原创

本文介绍如何在 Django 中利用 @login_required 装饰器实现简单的登录验证。通过配置 settings.py 中的 LOGIN_URL 参数,未登录用户访问受限页面时会自动跳转至登录界面,登录成功后则自动返回原访问地址。

核心机制

Django 提供了内置的 @login_required 装饰器,用于保护视图函数。其核心逻辑如下:

  • 检查用户是否已登录。
  • 若未登录,将用户重定向到登录页面。
  • 若已登录,则执行视图函数。

该机制能确保未授权用户无法直接访问受保护的页面,并在登录成功后自动跳转回之前尝试访问的地址。

配置步骤

1. 配置登录页面 URL

在项目的 settings.py 文件中,需要指定登录页面的 URL 路径。这通过 LOGIN_URL 参数完成:

LOGIN_URL="/login/"

此配置告诉 Django,当用户未登录时,应将其重定向到 /login/ 路径。

2. 在视图函数应用装饰器

在需要登录验证的视图函数定义前,添加 @login_required 装饰器。例如,在一个修改密码的视图函数中:

@login_required
def change_pwd(request):
  if request.method=="GET":
    pass
  if request.method=="POST":
    username=request.session.get("user")
    u = User.objects.get(username=username)
    u.set_password('new_password')
    u.save()

在此示例中,change_pwd 函数受到保护。只有登录用户才能访问此视图。当用户尝试访问此页面但未登录时,Django 会自动将其重定向到 settings.py 中配置的 LOGIN_URL 指定的页面。

注意事项

  • 确保 LOGIN_URL 指向的视图能够正确处理登录逻辑。
  • 在视图函数中,可以通过 request.user 获取当前登录用户的信息。
  • 若用户未登录,request.user 将是一个 AnonymousUser 对象。

以上就是 Django 使用 @login_required 实现登录验证与跳转的详细内容,更多关于 Django 视图装饰器的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。