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

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

本文深入解析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 相关产品和应用

全部下载

专题列表