[django]钩子函数的一些细节(clean)
函数名
说明:clean_后面跟着的是需要校验字段名称
示例:
class RelUserReset(forms.ModelForm):
def clean_confirm_password(self):
pass
校验顺序
说明:如果是继承的是Form对象,校验顺序就是字段在表单中的定义顺序。如果是继承的是ModelForm对象,校验顺序就是class Meta中fileds列表的顺序。
关于clean_data
说明:clean_data 里面装的是已经经过验证的字段。clean_data是一个字典。
错误示例:
class RelUserReset(forms.ModelForm):
class Meta:
model = UserInfo
fields = ["password","confirm_password"]
#定义钩子函数
def clean_password(self):
psw = self.cleaned_data.get("password")
#报错点
confirm = self.cleaned_data.get("confirm_password")
if confirm != psw:
raise ValidationError("密码不一致")
return confirm
这里的代码块有点多,请耐心阅读
先关注函数名clean_password,由于表单验证是有顺序的,并且在fields列表里面confirm_password在password之后,所以此时的confirm_password是没有经过校验的,也就是说cleaned_data里面还没有存在confirm_password的值,所以所有会出现报错。
解决方法:把钩子的函数名改成clean_confirm_password
[django]钩子函数的一些细节(clean)的更多相关文章
- 72、django之简单验证码实现与form表单钩子函数补充
本篇主要讲解简单的验证码实现,验证码使用基本都是找现成的组件来实现,用代码实现这个简单功能主要是了解了解验证码内部的实现. 本篇导航: 五位验证码图示 代码实现 登录验证 Form组件钩子函数补充 一 ...
- django之简单验证码实现与form表单钩子函数补充
本篇主要讲解简单的验证码实现,验证码使用基本都是找现成的组件来实现,用代码实现这个简单功能主要是了解了解验证码内部的实现. 本篇导航: 五位验证码图示 代码实现 登录验证 Form组件钩子函数补充 一 ...
- django重写form表单中的局部钩子函数
from django import forms from django.core.exceptions import ValidationError from jax import models c ...
- django基础之day09,创建一个forms表单组件进行表单校验,知识点:error_messages,label,required,invalid,局部钩子函数,全局钩子函数, forms_obj.cleaned_data,forms_obj.errors,locals(), {{ forms.label }}:{{ forms }},{{ forms.errors.0 }}
利用forms表单组件进行表单校验,完成用户名,密码,确认密码,邮箱功能的校验 该作业包含了下面的知识点: error_messages,label,required,invalid,局部钩子函数,全 ...
- Django forms组件与钩子函数
目录 一.多对多的三种创建方式 1. 全自动 2. 纯手撸(了解) 3. 半自动(强烈推荐) 二.forms组件 1. 如何使用forms组件 2. 使用forms组件校验数据 3. 使用forms组 ...
- ajax提交文件,django测试脚本环境书写,froms组件,钩子函数
1.在新版本中,添加app是直接在settings设置中,将INSTALLED_APPS里添加app名字, 但是他的完整写法是 'app01.apps.App01Config' 因为新版本做了优 ...
- django之表多对多建立方式、form组件、钩子函数 08
目录 多对多三种创建方式 1.全自动(用ManyToManyField创建第三张表) 2.纯手写 3.半自动 form组件 引入 form组件的使用 forms组件渲染标签 form表单展示信息 fo ...
- [Django REST framework - 序列化组件、source、钩子函数]
[Django REST framework - 序列化组件.source.钩子函数] 序列化器-Serializer 什么是rest_framework序列化? 在写前后端不分离的项目时: 我们有f ...
- Django day26 HyperlinkedIdentityField,序列化组件的数据校验以及功能的(全局,局部)钩子函数,序列化组件的反序列化和保存
一:HyperlinkedIdentityField(用的很少):传三个参数:第一个路由名字,用来反向解析,第二个参数是要反向解析的参数值,第三个参数:有名分组的名字 -1 publish = ser ...
- (32)forms组件(渲染自建规则:局部钩子函数和全局钩子函数)
要达成渲染自建规则 1.局部钩子函数(某个字段,自定意义规则,不如不能以sb开头,数据库已存在等) 2.全局钩子函数(校验两次密码是否一致) 3.使用css样式 register.html <! ...
随机推荐
- CSS 子代选择器(>)
后代选择器 后代选择器?是一种多个用空格分隔的选择器,别称包含选择器.范围是当前节点的所有子节点,包括其直接子节点. div#app下的所有 div 元素都使用下面的样式: div#app div { ...
- postgresql序列基本操作
1.创建序列 CREATE SEQUENCE if not exists test_mergetable_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 99999999 ...
- Angular 发布IIS
1.IIS服务器需要安装插件 安装 Url https://www.iis.net/downloads/microsoft/url-rewrite 2.修改配置 在src目录下,添加 web.conf ...
- LeetCode-386 字典序排数
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lexicographical-numbers 题目描述 给你一个整数 n ,按字典序返回范围 [ ...
- Mybatis-概览地图
思考: "为什么在使用 Mybatis 的时候,只需定义一个接口,不用写实现类就能使用XML中或者注解上配置好的SQL语句,就能完成对数据库 CRUD 的操作呢?" 这是因为用到了 ...
- C#辗转相除法输出最大公约数
void main() { int r, m, n, t; scanf_s("%d\n%d", &m, &n); if (m < n) { t = m; m ...
- C#判断一个字符串是否为整数
判断一个字符串是否为数字 使用int.TryParse()方法 利用int类型自带的TryParse(string, ou int) 方法可以解决问题,此方法通过对应的输入内容string,如果是 ...
- jsgrammer
jsgrammer 计算机编程基础 能够说出什么是编程语言 能够区分编程语言和标记语言的不同 能够说出常见的数据存储单位及其换算关系 能够说出内存的主要作用以及特点 关键词:编程语言 计算机基础 编程 ...
- Day 24 24.1:逆向分析1 - Steam案例
STEAM逆向分析 url:https://store.steampowered.com/login/?redir=&redir_ssl=1 分析思路: 输入用户名和密码后,点击登录按钮,通过 ...
- 225-基于XCVU440T的多核处理器多输入芯片验证板卡
225-基于XCVU440T的多核处理器多输入芯片验证板卡 基于XCVU440T的多核处理器多输入芯片验证板卡 一.板卡概述 本板卡系我司自主研发的基于6U CPCI处理板,适用于多核处理器多输入 ...