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多线程threading.Lock锁用法实例
Nov 01 Python
Python2.x版本中基本的中文编码问题解决
Oct 12 Python
python制作最美应用的爬虫
Oct 28 Python
python检索特定内容的文本文件实例
Jun 05 Python
python 用opencv调用训练好的模型进行识别的方法
Dec 07 Python
Django组件之cookie与session的使用方法
Jan 10 Python
浅谈python编译pyc工程--导包问题解决
Mar 20 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
Mar 22 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
Python字符串格式化常用手段及注意事项
Jun 17 Python
Python import模块的缓存问题解决方案
Jun 02 Python
python之django路由和视图案例教程
Jul 26 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
解决GD中文乱码问题
2007/02/14 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
2017/05/05 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
jQuery简单实现两级下拉菜单效果代码
2015/09/15 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
Python实现的简单发送邮件脚本分享
2014/11/07 Python
Python计算回文数的方法
2015/03/11 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
Python3 JSON编码解码方法详解
2019/09/06 Python
WxPython实现无边框界面
2019/11/18 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
python如何建立全零数组
2020/07/19 Python
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
公司的门卫岗位职责
2014/09/09 职场文书
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript
ipad隐藏软件app图标方法
2022/04/19 数码科技
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技
APP界面设计技巧和注意事项
2022/04/29 杂记