学习笔记,仅供参考


文章目录

  • 用户认证系统
    • User模型类
    • auth基本模型操作
      • 创建用户
      • 删除用户
      • 修改密码
      • 检查密码是否正确

用户认证系统

Django自带一个用户认证系统,它处理用户账号、组、权限以及基于cookie的用户会话。

  • 作用

    • 添加普通用户和超级用户

    • 修改密码

    • 登陆和退出管理

    • 查看已登陆用户

User模型类

  • auth应用

现在,我们看一下mybookstore数据库下的数据表:

mysql> show tables;
+----------------------------+
| Tables_in_mybookstore      |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| bookstore_book             |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| userinfo_user              |
+----------------------------+
12 rows in set (0.00 sec)

我们知道Django对这些数据表的命名规则为应用名_类名,由上面的输出结果,我们发现前6个数据表都是以auth为开头的,这是因为Django自动的给我们创建了一个应用auth,这是一个用户验证的APP,在它的models.py模块中有一个User模型类,我们可以导入该类,帮助我们完成用户验证的工作。

  • User模型类的导入
from django.contrib.auth.models import User
  • User对象的基本属性
属性名 类型 是否必须存在
username 用户名
password 密码
email 邮箱 可选
first_name 可选
last_name 可选
is_superuser 是否是管理员(超级用户)帐号(/admin) 可选
is_staff 是否可以访问admin管理界面 可选
is_active 是否是活跃用户,默认True。
服务器端一般不会轻易删除用户,而是将用户的is_active设为False,这样用户将处于不可用状态。
可选
last_login 上一次的登录时间 可选
date_joined 用户创建的时间 可选

还记得我们在学习admin后台数据库管理时的一条创建管理员帐号的命令么:

python manage.py createsuperuser

这条命令其实就相当于创建了一个User对象,即在mysql的auth_user数据表中添加了一条用户记录.

  • 数据库的表现形式

现在,我们看一下mysql中的auth_user数据表:

mysql> desc auth_user;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| password     | varchar(128) | NO   |     | NULL    |                |
| last_login   | datetime(6)  | YES  |     | NULL    |                |
| is_superuser | tinyint(1)   | NO   |     | NULL    |                |
| username     | varchar(150) | NO   | UNI | NULL    |                |
| first_name   | varchar(30)  | NO   |     | NULL    |                |
| last_name    | varchar(150) | NO   |     | NULL    |                |
| email        | varchar(254) | NO   |     | NULL    |                |
| is_staff     | tinyint(1)   | NO   |     | NULL    |                |
| is_active    | tinyint(1)   | NO   |     | NULL    |                |
| date_joined  | datetime(6)  | NO   |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+
11 rows in set (0.02 sec)

可以看到id为11位的整形,password最多可以存储128个字符,username最多可以存储150个字符等等…

auth基本模型操作

创建用户

  • 创建普通用户create_user
from django.contrib.auth import models
user = models.User.objects.create_user(username='用户名', password='密码', email='邮箱',...)
...
user.save()
  • 创建超级用户create_superuser
from django.contrib.auth import models
user = models.User.objects.create_superuser(username='用户名', password='密码', email='邮箱',...)
...
user.save()

删除用户

from django.contrib.auth import models
try:user = models.User.objects.get(username='用户名')user.is_active = False  #使当前用户无效user.save()print("删除普通用户成功!")
except:print("删除普通用户失败")

修改密码

from django.contrib.auth import models
try:user = models.User.objects.get(username='用户名')user.set_password('新密码')#Django会利用set_password方法对新密码进行加密#所以,我们不能用user.password的方法修改密码user.save()return HttpResponse("修改密码成功!")
except:return HttpResponse("修改密码失败!")

检查密码是否正确

from django.contrib.auth import models
try:user = models.User.objects.get(username='用户名')if user.check_password('输入的密码'):  #成功返回True,失败返回False#Django会先对输入的密码进行加密#然后再对保存在数据库中的加密后密码进行比较return HttpResponse("密码正确")else:return HttpResponse("密码错误")
except:return HttpResponse("没有此用户!")

Django(part48)--用户认证系统相关推荐

  1. Django默认用户认证系统和用户模型类

    Django默认用户认证系统和用户模型类 1.Django默认用户认证系统 Django自带用户认证系统 Django认证系统位置 Django认证系统同时处理认证和授权 Django认证系统包含的内 ...

  2. django用户认证系统——登录4

    用户已经能够在我们的网站注册了,注册就是为了登录,接下来我们为用户提供登录功能.和注册不同的是,Django 已经为我们写好了登录功能的全部代码,我们不必像之前处理注册流程那样费劲了.只需几分钟的简单 ...

  3. django用户认证系统——拓展 User 模型2

    Django 用户认证系统提供了一个内置的 User 对象,用于记录用户的用户名,密码等个人信息.对于 Django 内置的 User 模型, 仅包含以下一些主要的属性: username,即用户名 ...

  4. django(权限、认证)系统——用户Login,Logout

    django(权限.认证)系统--用户Login,Logout 上面两篇文章,讲述的Django的Authentication系统的核心模型对象User API和相关的使用,本文继续深入,讨论如何在W ...

  5. django(权限、认证)系统—— 基于Authentication backends定制

    django(权限.认证)系统-- 基于Authentication backends定制 在这篇文章中,我们进行最后关于DjangoPermission系统的探讨,来谈谈关于Permission系统 ...

  6. Django的身份认证系统

    1 . 在Django中使用身份认证系统 Django的身份认证系统实际上是一个app,该app叫做django.contrib.auth,它在django contrib模块下 使用时只需要在set ...

  7. python 全栈开发,Day79(Django的用户认证组件,分页器)

    一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...

  8. Laravel核心代码学习--用户认证系统(基础介绍)

    用户认证系统(基础介绍) 使用过Laravel的开发者都知道,Laravel自带了一个认证系统来提供基本的用户注册.登录.认证.找回密码,如果Auth系统里提供的基础功能不满足需求还可以很方便的在这些 ...

  9. Laravel核心代码学习--用户认证系统的实现细节

    用户认证系统的实现细节 上一节我们介绍了Laravel Auth系统的基础知识,说了他的核心组件都有哪些构成,这一节我们会专注Laravel Auth系统的实现细节,主要关注Auth也就是AuthMa ...

最新文章

  1. android tools ignore,android 中tools:ignore=UselessParent这个属性的含义是什么?
  2. OpenCV YOLO DNN(yolo_object_detection)
  3. 解决Office 2016客户端如何同SharePoint Server2016安装在一起
  4. 微服务一定要使用Spring-Cloud吗?
  5. 【Qt】解决GDAL直接读取数据到QImage导致图像歪斜的问题
  6. 牛客16785 Cantor表
  7. crv仪表上的i是什么指示灯_汽车打不着火是怎么回事,仪表盘汽车发动机故障灯亮是什么情况故障指示灯图解大全集...
  8. Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
  9. 别吹了!程序员自学Python,不如9岁小孩,网友:我不服.... ​
  10. 个人生活助手app_“3·15可信赖应用白名单”发布 360旗下多款APP获评甲级认证
  11. 计算机多功能教室管理制度,多媒体教室管理制度
  12. 软件测试基础学习笔记
  13. Crystal Reports 2008|Crystal Reports 2008破解版下载
  14. JavaScript零基础入门 11:JavaScript实现图片上传并预览
  15. Windows的文件目录管理策略
  16. matlab小波变换函数总结,matlab小波变换函数的总结与程序
  17. 游戏角色命名与游戏风格
  18. 用matlab作gmm参数估计,GMM模型的EM参数估计算法
  19. CodeForces 1009D Relatively Prime Graph 贪心+枚举
  20. I/O流(万流齐发、万流归宗) 本章目标: 掌握 讲  解:★★★★★ http://kuaibao.qq.com/s/20200527A0LR3000?refer=spider 1.I/O流概

热门文章

  1. ubuntu16.04安装mysql-workbench
  2. pytorch 构建神经网络模型总结
  3. java 缘起_GraalVM 助力 Java 进入函数即服务时代
  4. 深度学习(九)——花式卷积
  5. GitHub, Google Code, and other
  6. html批量转doc linux,HTML+CSS入门 Linux下如何批量将md文件转换为html文件
  7. java京东左侧固定层_京东首页右侧固定层
  8. pythondatetime小时_使用python从时间戳中提取小时
  9. mysql 代码怎么优化_Mysql性能优化
  10. 08.Eclipse下Ndk开发(使用fmod实现QQ变声功能)