Django认证系统user对象实现过程解析


Posted in Python onMarch 02, 2020

User对象

User对象是认证系统的核心。它们通常表示与你的站点进行交互的用户,并用于启用限制访问、注册用户信息和关联内容给创建者等。在Django的认证框架中只存在一种类型的用户,因此诸如'superusers'或管理员'staff'用户只是具有特殊属性集的user对象,而不是不同类型的user对象。

创建users

创建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表

Django认证系统user对象实现过程解析

创建superusers

使用createsuperuser命令创建superusers:

$ 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表,密码已经改变

Django认证系统user对象实现过程解析

认证Users

authenticate(**credentials)[source]

认证一个给定用户名和密码,请使用authenticate()。它以关键字参数形式接收凭证,对于默认的配置它是username和password,如果密码对于给定的用户名有效它将返回一个User对象。如果密码无效,authenticate()返回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

验证成功,已激活

Django认证系统user对象实现过程解析

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

Python 相关文章推荐
python使用线程封装的一个简单定时器类实例
May 16 Python
Python3中的列表,元组,字典,字符串相关知识小结
Nov 10 Python
python3写爬取B站视频弹幕功能
Dec 22 Python
python实现蒙特卡罗方法教程
Jan 28 Python
详解python读取image
Apr 03 Python
详解python多线程之间的同步(一)
Apr 03 Python
python如何统计代码运行的时长
Jul 24 Python
python+selenium 脚本实现每天自动登记的思路详解
Mar 11 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
python开发入门——set的使用
Sep 03 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 Python
Python的Tqdm模块实现进度条配置
Feb 24 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 #Python
Python基于requests库爬取网站信息
Mar 02 #Python
使用python3 实现插入数据到mysql
Mar 02 #Python
python数字类型math库原理解析
Mar 02 #Python
Python如何实现在字符串里嵌入双引号或者单引号
Mar 02 #Python
Python random库使用方法及异常处理方案
Mar 02 #Python
python 实现人和电脑猜拳的示例代码
Mar 02 #Python
You might like
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
php adodb连接mssql解决乱码问题
2009/06/12 PHP
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
jQuery中[attribute!=value]选择器用法实例
2014/12/31 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
2017/03/23 jQuery
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
webpack4 从零学习常用配置(小结)
2019/05/28 Javascript
python输入错误密码用户锁定实现方法
2017/11/27 Python
tensorflow 获取变量&打印权值的实例讲解
2018/06/14 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
Django Rest framework频率原理与限制
2019/07/26 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
python实现文法左递归的消除方法
2020/05/22 Python
HTML5学习笔记之html5与传统html区别
2016/01/06 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
简述数据库的设计过程
2015/06/22 面试题
年会主持词结束语
2014/03/27 职场文书
银行求职自荐信
2014/06/30 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
公司新员工欢迎词
2015/09/30 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android