Django之Hook函数
Django之钩子Hook方法
局部钩子:
在Fom类中定义 clean_字段名() 方法,就能够实现对特定字段进行校验。(校验函数正常必须返回当前字段值)
def clean_name(self):
pass
name = self.cleaned_data.get('name')
if name=='admin':
raise ValidationError('admin是超级管理员,不能注册!')#这个错误会直接扔进该字段的错误类别中:name.errors
return self.cleaned_data.get('name')
全局钩子:
在Fom类中定义 clean() 方法,就能够实现对字段进行全局校验,字段全部验证完,局部钩子也全部执行完之后,
执行这个全局钩子校验(校验函数正常必须返回当前对象的结果值)。
全局钩子
def clean(self):
register_dict = self.cleaned_data
print('>>>>>', register_dict)
if register_dict.get('password') != register_dict.get('r_password'):
raise ValidationError('密码不一致!')#由于是在全局非字段内校验,这个错误会扔给全局对象self中:self.erors
self.add_error('r_password', '两次密码不一致!')#可以使用对象的add_error('字段','错误提示')进行指定
else:
return self.cleaned_data
钩子实例:
from django import forms
from django.core.exceptions import ValidationError
class Registerform(forms.Form):
name = forms.CharField(
label='用户名:',
# required=True,
max_length=10,
min_length=6,
help_text='只能由字符数字下划线组成,长度在6到10个字符', # 提示信息
# initial='只能由字符数字下划线组成',#默认值
error_messages={'required': '*必填项',
'max_length': '长度不能超过10',
'min_length': '至少6个字符', },
)
password = forms.CharField(
label='密码:',
max_length=12,
min_length=6,
error_messages={'required': '*必填项',
'max_length': '长度不能超过12',
'min_length': '至少6个字符', },
# widget=forms.widgets.PasswordInput(attrs={'class': 'form-control'},render_value=True),
widget=forms.PasswordInput(attrs={'class': 'form-control'}, render_value=True),
)
r_password = forms.CharField(
label='确认密码:',
max_length=12,
min_length=6,
error_messages={'required': '*必填项',
'max_length': '长度不能超过12',
'min_length': '至少6个字符', },
widget=forms.widgets.PasswordInput(attrs={'type':'password'},render_value=True)#密码验证出错时直接返回会自动清除内容,如果要保留,需设置render_value=True
)
def __init__(self, *args, **kwargs):
super(Registerform, self).__init__(*args, **kwargs)
# print(self.fields)
for filed in self.fields:
print('>>>>', filed)
self.fields[filed].widget.attrs.update({'class': 'form-control'})
# 局部钩子
def clean_name(self):
pass
name = self.cleaned_data.get('name')
if name=='admin':
raise ValidationError('admin是超级管理员,不能注册!')#这个错误会直接扔进该字段的错误类别中:name.errors
return self.cleaned_data.get('name')
def clean_password(self):
pass
return self.cleaned_data.get('password')
def clean_r_password(self):
pass
return self.cleaned_data.get('r_password')
# 全局钩子
def clean(self):
register_dict = self.cleaned_data
print('>>>>>', register_dict)
if register_dict.get('password') != register_dict.get('r_password'):
raise ValidationError('密码不一致!')#由于是在全局非字段内校验,这个错误会扔给全局对象self中:self.erors
self.add_error('r_password', '两次密码不一致!')#可以使用对象的add_error('字段','错误提示')进行指定
else:
return self.cleaned_data
Django之Hook函数的更多相关文章
- HOOK函数(一)——进程内HOOK
什么是HOOK呢?其实很简单,HOOK就是对Windows消息进行拦截检查处理的一个函数.在Windows的消息机制中,当用户产生消息时,应用程序通过调用GetMessage函数取出消息,然后把消息放 ...
- Django之视图函数总结
Django之视图函数总结 HttpRequest与HttpResponse http请求中产生两个核心对象: HttpRequest对象:用户请求相关的所有信息(对象) HttpResponse对象 ...
- django views视图函数返回值 return redirect httpresponse总结
django views视图函数返回值 return redirect render httpresponse总结
- Django自定义模板函数
Django自定义模板函数 https://www.cnblogs.com/SunsetSunrise/p/7680491.html 在django中新建一个应用:listpage在listpage中 ...
- Django 定义视图函数
Django 定义视图函数 一.接收内容及文件处理 1.接收分类 # 获取数据 request.GET # 提交数据 request.POST # 获取文件 request.FILES 2.check ...
- 03 Django之视图函数
一.Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python函数(类),它接受WEB请求并返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误, ...
- [PyTorch 学习笔记] 5.2 Hook 函数与 CAM 算法
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson5/hook_fmap_vis.py https://gi ...
- 利用Objective-C运行时hook函数的三种方法
版权声明:转载请注明出处:http://blog.csdn.net/hursing 方法一,hook已有公开头文件的类: 首先写一个Utility函数: #import <objc/runtim ...
- Django 使用 locals() 函数
locals() 函数会以字典类型返回当前位置的全部局部变量. 在 views.py 中添加 from django.shortcuts import render,HttpResponse,rend ...
随机推荐
- Mac cpu过高问题分析及解决
1.mds.mds_stores.mdworker 关闭: sudo mdutil -a -i off 打开: sudo mdutil -a -i on
- codeforces#1120C. Compress String(dp+后缀自动机)
题目链接: https://codeforces.com/contest/1120/problem/C 题意: 从前往后压缩一段字符串 有两种操作: 1.对于单个字符,压缩它花费$a$ 2.对于末尾一 ...
- 第二次作业社团UML图
第二次作业 UML图 用例图: 时序图: 申请加入社团 学生可以在页面投递社团加入申请,送交给社团管理员审批 社团活动审批 团委通过社团提交胡活动进行审批 评价活动 社团活动举行完,会有相应的团委和学 ...
- [后渗透]Linux下的几种隐藏技术【转载】
原作者:Bypass 原文链接:转自Bypass微信公众号 0x00 前言 攻击者在获取服务器权限后,会通过一些技巧来隐藏自己的踪迹和后门文件,本文介绍Linux下的几种隐藏技术. 0x01 隐藏文件 ...
- ICEM-圆锥的一种画法
原视频下载地址:https://yunpan.cn/cqK53dKBnduM9 访问密码 42be
- Cubic-bezier 曲线
cubic-bezier又称三次贝塞尔,主要是为animation生成速度曲线函数. cubic-bezier(x1,y1,x2,y2) 此图中: P0:(0,0) P1:(x1,y1) P2:(x2 ...
- Oracle plsql 触发器 查询/启用/停止
在PLSQL中查询某个表的触发器脚本 select * from user_triggers where table_name='xxx' oracle触发器的启用和停用 1.禁用 table_nam ...
- String源码分析
前言:String类在日常开发过程中使用频率非常高,平时大家可能看过String的源码,但是真的认真了解过它么,笔者在一次笔试过程中要求写出String的equals方法,瞬间有点懵逼,凭着大致的理解 ...
- Mysql -- The used SELECT statements have a different number of columns
这是因为使用union的两个SQL语句产生的记录的表结构不一致. 必须是结构完全一致的记录集合才可以使用UNION. 以上就是两个表的字段不一样,导致,所以大家可以检查下. 可以 将 select * ...
- 服务挂后Dump日志
JAVA_HOME=/usr/java OUTPUT_HOME=~/output DEPLOY_HOME=`dirname $0` HOST_NAME=`hostname` DUMP_PIDS=`ps ...