Django User对象全解析:创建、修改与认证流程

顾言
顾言
发布时间:2026-10-13| 4人浏览过
原创

本文深入解析Django认证框架中的User对象。内容涵盖User对象的核心作用,包括使用create_user()创建普通用户、通过createsuperuser命令生成超级管理员,以及利用set_password()安全修改密码。同时详细讲解authenticate()函数的认证机制与is_active状态检查,帮助开发者掌握Django用户管理的完整流程。

Django User对象概述

User对象

User对象构成了Django认证系统的核心基础。它通常代表与网站进行交互的具体用户,主要功能包括限制访问权限、存储注册用户信息以及将内容关联至创建者。在Django的认证框架设计中,仅存在一种类型的用户模型。所谓的“超级用户”或“管理员(staff)”并非独立的用户类型,而是具备特定属性集合的普通User对象实例。

创建普通用户

创建users

创建用户最直接且推荐的方式是使用create_user()辅助函数。该函数会自动处理密码哈希等安全细节,确保存储的安全性。


>>> from django.contrib.auth.models import User
>>> user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')

from django.contrib.auth.models import User
def create_user(request):
  #auth_user
  # user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')
  #superuser python manage.py createsuperuser --username=joe --email=joe@example.com
  u = User.objects.get(username='john')
  u.set_password('new password')
  u.save()
  return HttpResponse("success-----%s"%u)

创建成功后见数据库auth_user表

创建超级管理员

创建superusers

对于需要更高权限的管理员账户,推荐使用createsuperuser命令进行创建。

$ python manage.py createsuperuser --username=joe --email=joe@example.com

或者

$ python manage.py createsuperuser

接下来依次输入用户密码即可 成功后见auth_user表

修改用户密码

修改密码


>>> from django.contrib.auth.models import User
>>> u = User.objects.get(username='john')
>>> u.set_password('new password')
>>> u.save()

成功后见auth_user表,密码已经改变

用户认证流程

认证Users

authenticate(**credentials)[source]

要验证给定用户名和密码的有效性,请使用authenticate()函数。该函数接收关键字参数形式的凭证,在默认配置下,这些参数为username和password。如果提供的密码与指定用户名匹配且有效,authenticate()将返回一个User对象;若密码无效或用户不存在,则返回None。示例如下:


from django.contrib.auth import authenticate
user = authenticate(username='john', password='secret')
if user is not None:
  # the password verified for the user
  if user.is_active:
    print()
  else:
    print()
else:
  # the authentication system was unable to verify the username and password
  print()

def auth(request):
  user = authenticate(username='john', password='new password')#john
  # user = authenticate(username='john', password='johnpassword')#None
  print(user)
  if user is not None:
    # the password verified for the user
    if user.is_active:
      print("验证成功,已激活")
    else:
      print("验证成功,未激活")
  else:
    # the authentication system was unable to verify the username and password
    print("没有此用户")
  return HttpResponse(user)

john

验证成功,已激活

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

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

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 算法库。