阅读目录

一、auth模块

from django.contrib import auth

django.contrib.auth中提供了许多方法,这里主要介绍其中的三个:

authenticate()

提供了用户认证,即验证用户名以及密码是否正确,一般需要username  password两个关键字参数

如果认证信息有效,会返回一个  User  对象。authenticate()会在User 对象上设置一个属性来标识后端已经认证了该用户,且该信息在后续的登录过程中是需要的。

user = auth.authenticate(username=username, password=pwd)

if user:

# 内置的login方法

# 1. 生成Session数据,存一下user_id 然后把sessionid写入Cookie

# 后续每一次请求来的时候,AuthenticationMiddleware中的process_request方法中

# 会取到user_id,进而取到user对象,然后添加到request.user属性中 --> request.user = user

# 后续我们都可以通过request.user拿到当前的登陆用户对象

login(HttpRequest, user)

该函数接受一个HttpRequest对象,以及一个认证了的User对象

此函数使用django的session框架给某个已认证的用户附加上session id等信息。

from django.contrib.auth import authenticate, login

def my_view(request):

username = request.POST['username']

password = request.POST['password']

user = authenticate(username=username, password=password)

if user is not None:

login(request, user)

# Redirect to a success page.

...

else:

# Return an 'invalid login' error message.

...

logout(request) 注销用户

from django.contrib.auth import logout

def logout_view(request):

logout(request)

# 调用auth内置的注销方法

该函数接受一个HttpRequest对象,无返回值。当调用该函数时,当前请求的session信息会全部清除。该用户即使没有登录,使用该函数也不会报错。

user对象的 is_authenticated()

要求:

用户登陆后才能访问某些页面,

如果用户没有登录就访问该页面的话直接跳到登录页面

用户在跳转的登陆界面中完成登陆后,自动访问跳转到之前访问的地址

方法1:

def my_view(request):

if not request.user.is_authenticated():

return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))

方法2:

django已经为我们设计好了一个用于此种情况的装饰器:login_requierd()

from django.contrib.auth.decorators import login_required

@login_required

def my_view(request):

...

若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ' (这个值可以在settings.py文件中通过LOGIN_URL进行修改)。

并传递  当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。

二、User对象

User 对象属性:username, password(必填项)password用哈希算法保存到数据库

is_staff : 用户是否拥有网站的管理权限.

is_active : 是否允许用户登录, 设置为``False``,可以不用删除用户来禁止 用户登录

is_authenticated()

如果是真正的 User 对象,返回值恒为 True 。 用于检查用户是否已经通过了认证。

通过认证并不意味着用户拥有任何权限,这个方法甚至也不检查该用户是否处于激活状态,只是表明用户成功的通过了认证。

这个方法很重要, 在后台用request.user.is_authenticated()判断用户是否已经登录,如果true则可以向前台展示request.user.name

创建用户

使用 create_user 辅助函数创建用户:

from django.contrib.auth.models import User

user = User.objects.create_user(username='',password='',email='')

check_password(password)

用户需要修改密码的时候,首先要让其输入原来的密码 ,如果给定的值通过了密码检查,返回 True

修改密码

使用 set_password() 来修改密码

user = User.objects.get(username='')

user.set_password(password='') #去数据库修改密码

user.save() #修改密码一定要保存

简单示例

@login_required

def set_password(request):

user = request.user

err_msg = ''

if request.method == 'POST':

old_password = request.POST.get('old_password', '')

new_password = request.POST.get('new_password', '')

repeat_password = request.POST.get('repeat_password', '')

# 检查旧密码是否正确

if user.check_password(old_password):

if not new_password:

err_msg = '新密码不能为空'

elif new_password != repeat_password:

err_msg = '两次密码不一致'

else:

user.set_password(new_password)

user.save()

return redirect("/login/")

else:

err_msg = '原密码输入错误'

content = {

'err_msg': err_msg,

}

return render(request, 'set_password.html', content)

修改密码示例

三、认证进阶

这内置的auth_user表这么好用,但是我在项目中没法直接使用啊!比如,我想要加一个存储用户手机号的字段,怎么办?

聪明的你可能会想到新建另外一张表然后通过一对一和内置的auth_user表关联,这样虽然能满足要求但是有没有更好的实现方式呢?

答案是当然有了。

我们可以通过继承内置的auth_user表的对应的类,来定义一个自己的ORM类:

from django.contrib.auth.models import AbstractUser

class UserInfo(AbstractUser):

"""

用户信息表

"""

nid = models.AutoField(primary_key=True)

phone = models.CharField(max_length=11, null=True, unique=True)

def __str__(self):

return self.username

注意!!!

按上面的方式扩展了内置的auth_user表之后,一定要在settings.py中告诉Django,我现在使用我新定义的UserInfo表来做用户认证。写法如下:

# 引用Django自带的User表,继承使用时需要设置

AUTH_USER_MODEL = "app名.UserInfo"

如何设置默认的登录页面是什么?

LOGIN_URL= “默认的页面”

Django 自带认证功能auth模块和User对象的基本操作

一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: authenticate()    ...

python3开发进阶-Django框架的起飞加速一(ORM)

阅读目录 ORM介绍 Django中的ORM ORM中的Model ORM的操作 一.ORM介绍 1.ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一 ...

python3开发进阶-Django框架的中间件的五种用法和逻辑过程

阅读目录 什么是中间件 中间件的执行流程 中间件的逻辑过程 一.什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围 ...

python3开发进阶-Django框架的详解

一.MVC框架和MTV框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分: 模型(Model).视图(View)和控制器(Con ...

python3开发进阶-Django框架的Form表单系统和基本操作

阅读目录 什么是Form组件 常用字段和插件 自定义校验的方式 补充进阶 一.什么是Form组件 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标 ...

python3开发进阶-Django框架的ORM常用字段和参数

阅读目录 常用字段 字段合集 自定义字段 字段参数 关系参数 多对多的关联关系的三种方式 一.常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中 ...

python3开发进阶-Django框架中的ORM的常用(增,删,改,查)操作

阅读目录 如何在Django终端打印SQL语句 如何在Python脚本中调用Django环境 操作方法 单表查询之神奇的下划线 ForeignKey操作 ManyToManyField 聚合查询和分组 ...

python3开发进阶-Django框架学习前的小项目(一个简单的学员管理系统)

''' 自己独立写一个学员管理系统 表结构: 班级表: -id -grade_name 学生表: -id -student_name -grade 关联外键班级表 老师表: -id -teacher_ ...

python3开发进阶-Django框架起飞前的准备

阅读目录 安装 创建项目 运行 文件配置的说明 三个组件 一.安装(安装最新LTS版) Django官网下载页面 根据官方的图版本,我们下载1.11版本的,最好用! 有两种下载方式一种直接cmd里: ...

随机推荐

第四十章 微服务CICD(2)- jenkins(war版)

一.下载 官网下载war包,放在tomcat下的webapps下, 第一章 tomcat安装与启动 第二章 部署war包到tomcat jenkins:2.19.1版本. 二.修改编码为utf-8 在 ...

xyiyy开始写博客了

拖延症一直到现在才开始写博客... 希望写的博客对大家能有一些帮助,有不恰当或者不对的地方,还望大家指出. 以下为我的两个昵称:fraud xyiyy

Java注解处理器--编译时处理的注解

1. 一些基本概念 在开始之前,我们需要声明一件重要的事情是:我们不是在讨论在运行时通过反射机制运行处理的注解,而是在讨论在编译时处理的注解.注解处理器是 javac 自带的一个工具,用来在编译时期扫 ...

「TJOI2015」线性代数 解题报告

「TJOI2015」线性代数 和牛客某题很像 在和里面有\(B_{i,j}\)要求是\(A_i,A_j\)都为\(1\),和里面减去\(C_i\)要求\(A_i\)为\(1\),然后先把贡献也就是\( ...

爬虫----requests模块

一.介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:requests库发送请求将网页内 ...

python的re正则表达式模块

元字符  .   *   +   ?   ^   $   { }     [ ]     -     \ .  匹配除了/n之外的任意一个字符 * 匹配*前面的单个字符任意次,即[0,+∞] + 匹配 ...

安装配置php

安装PHP       1.安装PHP       yum install php   #根据提示输入Y直到安装完成        2.安装PHP组件,使PHP支持 MySQL.PHP支持FastCG ...

3.26-3.31【cf补题+其他】

计蒜客)翻硬币 //暴力匹配 #include #include #define CLR(a, b) memset((a), (b), s ...

mysql 导入CSV数据 [转]

转自: http://blog.chinaunix.net/uid-23284114-id-3196638.html MYSQL   LOAD DATA INFILE命令可以把csv平面文件中的数据导 ...

Windbg工具使用

https://www.cnblogs.com/startpoint/p/4194052.html https://www.cnblogs.com/lyl6796910/p/7613664.html ...

django python3会员中心_python3开发进阶-Django框架的自带认证功能auth模块和User对象的基本操作...相关推荐

  1. python3 django开发_python3开发进阶-Django框架学习前的小项目(一个简单的学员管理系统)...

    ''' 自己独立写一个学员管理系统 表结构: 班级表: -id -grade_name 学生表: -id -student_name -grade 关联外键班级表 老师表: -id -teacher_ ...

  2. python写数据库中间件_python3开发进阶-Django框架的中间件的五种用法和逻辑过程...

    阅读目录 一.什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出. 每个中间件组件都 ...

  3. Django的自带认证系统——auth模块

    Django自带的用户认证 auth模块 from django.contrib import auth 备注:使用auth模块时,我们默认使用Django提供的auth_user表,创建数据时,可以 ...

  4. python表单管理系统_python3开发进阶-Django框架的Form表单系统和基本操作

    {% csrf_token %} 用户名 密码 {{ error_msg }}

  5. Django (auth模块、User对象、用户认证、线上-用户认证)

    一.auth模块 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: authenticate()    提供了用户认证,即验证用户名以及密码是否正确,一般需要usern ...

  6. django python3 异步_详解配置Django的Celery异步之路踩坑

    人生苦短,我用python. 看到这句话的时候,感觉可能确实是很深得人心,不过每每想学学,就又止步,年纪大了,感觉学什么东西都很慢,很难,精神啊注意力啊思维啊都跟不上.今天奶牛来分享自己今天踩的一个坑 ...

  7. django框架-DRF工程之认证功能

    1.在Rest framework中进行了一系列的封装,这个认证功能也是被封装到在DRF工程中的一种,想要使用,首先需要在配置文件中进行相应的配置 REST_FRAMEWORK = { 'DEFAUL ...

  8. 织梦高端大气响应式会员中心模板 自适应手机端

    介绍: 织梦dedecms高端大气响应式会员中心模板 自适应手机端 UTF8+GBK 新开发的高端简单大气织梦会员中心,响应式自适应手机端,后台充值功能,可以对接宝等其他的第三方 网盘下载地址: ht ...

  9. html会员中心源码,响应式自适应手机端会员中心(两种编码)

    模板名称: 织梦响应式自适应手机端会员中心(两种编码) 模板介绍: 大家又有福利咯,新开发的织梦会员中心,响应式自适应手机端,后台充值功能,可以对接支付宝等其他的第三方支付软件, 高端简单大气,重要是 ...

最新文章

  1. 突破Windows下select64的限制
  2. openstack下
  3. android mdpi对应哪一个屏幕,android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配...
  4. 2017.9.13 序列维护 思考记录
  5. Azure Synapse Analytics简介第3部分:数据科学和商业智能
  6. iOS9 开发新特性 Spotlight使用
  7. 计算机组成原理(LogisimVerilog部分)-笔记
  8. 【智能优化算法】基于Levy飞行策略的改进樽海鞘群算法求解单目标优化问题matlab代码
  9. dcp-9020cdn复印位置有_兄弟DCP-9020CDN打印机驱动下载
  10. 应广单片机长按开关机_单键实现单片机开关机设计案例
  11. 谷歌浏览器好用的复制粘贴插件_Chrome粘贴插件:将其粘贴
  12. 服务器装win10性能怎样,普通Win10越升越卡?Win10专业工作站版了解下
  13. 模电学习笔记(八)——差分放大器
  14. 安卓疫情打卡APP源码
  15. Unity 修改场景中人型骨骼模型的骨骼旋转角度
  16. UE4 后期处理 PostProcess
  17. TP5.1使用创蓝短信实现验证码的发送以及频控
  18. 物流系统(简单er图)
  19. 单台服务器做redis集群
  20. 采购标准订单/标准收货 AI U9配置

热门文章

  1. 极大似然估计(Maximum likelihood estimation,MLE):用样本估计总体参数
  2. 《脱颖而出——成功网店经营之道》一1.6 电商通常都会聚集在这几个地方
  3. 7月起韩国日访问量超10万人次网站实行实名制
  4. 一种基于霍尔传感器的电机转子转速的测量
  5. 会计凭证抬头文本增强的问题
  6. Preface_英语
  7. 使用程序绘制万花筒图案
  8. 《代码整洁之道》细节之中自有天地,整洁成就卓越代码 读书笔记
  9. Web基础:Token
  10. 上海儿童编程培训python课程体系是什么