本节内容:
1、form组件(校验字段的功能)
2、用户认证组件
一、form组件(校验字段的功能)
在views.py下创建一个对应该表的类,规定输入字段的规则
1、四条语法
ef = EmpForm({"name":"shuying", "age":20}) # 实例化一个form对象,传的实参为一个字典,
# 为你要校验的字段,注意键名要跟类变量的名一致
ef.is_valid() # 检验字段,是否符合规则
ef.cleaned_data # 拿到干净的数据
ef.errors # 拿到错误的信息,样式为字典:{'name': ['This field is required.']}
语法演示
2、作用之校验数据(重点)
通过创建一个类,该类继承forms.Form类,
就可以通过其来起到校验数据的作用
3、作用之渲染模板(add.html)
1 代码简单
2 命名规范
3 显示错误信息 # 方便显示,可以直接在模板中调用
1、渲染方式一(常用)
用for循环取出每一个字段,
2、渲染方式二
单独写每一个标签
3、渲染方式三
自动生成,键名为类属性的名
4、显示错误与重置输入信息功能
利用form表单刷新页面,显示用户输入的错误原因
视图函数
模板
5、钩子:灵活制定各种校验规则
针对字段的,你写一个方法,检验一个字段,执行详细的检验规则,
方法名要按规定写。def clear_类属性名():
视图中的钩子
6、基于ajax请求的信息校验(重点)
视图
模板中的HTML文件,ajax请求
二、用户认证组件
Django自带的方便我们进行用户认证的组件,所有的request都会经过这个中间件
大前提:
这里使用的所有的API函数针对的是Django自带的auth_user表。
1、auth模块
实例详解
1、auth模块命令解析
from django.contrib import auth
django.contrib.auth中提供了许多方法,这里主要介绍其中的三个:
1、authenticate()
提供了用户认证,即验证用户名以及密码是否正确,一般需要username password两个关键字参数
如果认证信息有效,会返回一个User 对象。
authenticate()会在User 对象上设置一个属性标识那种认证后端认证了该用户,
且该信息在后面的登录过程中是需要的。
当我们试图登陆一个从数据库中直接取出来不经过authenticate()的User对象会报错的!!
user = authenticate(username='someone',password='somepassword')
2、login(HttpRequest, user)
该函数接受一个HttpRequest对象,以及一个认证了的User对象
此函数使用django的session框架给某个已认证的用户附加上session id等信息。
3、logout(request) 注销用户
该函数接受一个HttpRequest对象,无返回值。
当调用该函数时,当前请求的session信息会全部清除。
该用户即使没有登录,使用该函数也不会报错。
2、user对象的 is_authenticated()
User 对象属性:username, password(必填项)password用哈希算法保存到数据库
1、user对象的 is_authenticated()
如果是真正的 User 对象,返回值恒为 True 。 用于检查用户是否已经通过了认证。
通过认证并不意味着用户拥有任何权限,甚至也不检查该用户是否处于激活状态,
这只是表明用户成功的通过了认证。
这个方法很重要, 在后台用request.user.is_authenticated()判断用户是否已经登录,
如果true则可以向前台展示request.user.name
fe:要求
2、创建用户
使用 create_user 辅助函数创建用户:
from django.contrib.auth.models import User
user = User.objects.create_user(username='',password='',email='')
3、check_password(passwd)
用户需要修改密码的时候 首先要让他输入原来的密码 ,
如果给定的字符串通过了密码检查,返回 True
4、修改密码
使用 set_password() 来修改密码
user = User.objects.get(username='')
user.set_password(password='')
user.save
3、简单示例
1、注册
注册简单示例
1、修改密码
修改密码简单示例