Django 自定义用户模型与身份验证实现指南

竹里
竹里
发布时间:2026-10-11| 4人浏览过
原创

本文详细解析如何在 Django 项目中实现自定义用户验证系统。通过继承 AbstractUser 创建自定义 User 模型,在 settings.py 中配置 AUTH_USER_MODEL 指向新表,并完成数据库迁移。文章进一步演示了如何使用 create_user 创建用户,以及利用 authenticate 函数进行身份验证,涵盖 POST 请求处理与结果判断。

自定义用户模型配置

Django 提供了强大的内置用户验证系统,但在实际开发中,我们往往需要扩展默认的用户字段。为了实现这一点,首先需要继承 AbstractUser 类来创建自定义的用户模型。这样做可以保留 Django 默认用户的所有功能,同时允许我们添加特定的业务字段。

from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    username = models.CharField(max_length=200, unique=True)
    password = models.CharField(max_length=200)

    class Meta:
        db_table = 'user'

在定义模型时,我们指定了 username 字段的最大长度为 200 且必须唯一,同时显式定义了 password 字段。通过 Meta 类中的 db_table 属性,我们指定了该模型在数据库中对应的表名为 user。

配置与数据库迁移

模型定义完成后,必须在 Django 的设置文件中指定系统验证所使用的表。这一步至关重要,它告诉 Django 使用我们自定义的用户模型来替代默认的用户模型。

# settings.py
AUTH_USER_MODEL = "应用名.表名"
# 例如:
AUTH_USER_MODEL = "myapp.User"

将 myapp 替换为你的应用实际名称,User 替换为你定义的模型类名。配置完成后,执行数据库迁移命令,使更改生效:

python manage.py makemigrations
python manage.py migrate

用户创建与身份验证

在配置好自定义用户模型后,我们可以开始处理用户的创建和身份验证。Django 提供了 create_user 方法来安全地创建新用户,以及 authenticate 函数来验证用户凭据。

from django.contrib.auth import authenticate
from rest_framework.views import APIView
from rest_framework.response import Response

class UserView(APIView):
    def post(self, request):
        # 创建新用户
        User.objects.create_user(username='小明', password='123')
        return Response({'code': 200})

    def get(self, request):
        # 验证用户信息
        result = authenticate(username='小明', password='123')
        # 验证存在时 result 值为 username,不存在时为 None
        return Response({'code': 200})

在 post 方法中,我们使用 User.objects.create_user 创建了一个名为“小明”的用户。注意,create_user 会自动处理密码的哈希存储,因此不应直接传递明文密码到数据库字段中。

在 get 方法中,我们使用 authenticate 函数来验证用户。该函数接受 username 和 password 作为参数。如果凭据正确,result 将返回用户对象(通常表现为 username);如果验证失败,result 将返回 None。开发者可以根据 result 的值来决定后续的操作,如登录成功或失败的处理。

总结

通过继承 AbstractUser 并配置 AUTH_USER_MODEL,我们可以灵活地定制 Django 的用户验证系统。结合 create_user 和 authenticate 方法,能够高效地实现用户的创建与身份验证功能。以上就是 Django 自带的用户验证系统实现的详细内容,更多关于 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 算法库。