Django之Forms组件之钩子函数(HOOK)
1 """ 2 在特定的节点自动触发完成响应操作 3 4 钩子函数在forms组件中就类似于第二道关卡,能够让我们自定义校验规则 5 6 在forms组件中有两类钩子 7 1.局部钩子 8 当你需要给单个字段增加校验规则的时候可以使用 9 2.全局钩子 10 当你需要给多个字段增加校验规则的时候可以使用 11 """ 12 # 实际案例 13 14 # 1.校验用户名中不能含有666 只是校验username字段 局部钩子 def clean_xxx(self) 15 16 # 2.校验密码和确认密码是否一致 password confirm两个字段 全局钩子 def cleaned(self) 17 18 # 钩子函数 在类里面书写方法即可 19 from django import forms 20 class MyForm(forms.Form): 21 username = forms.CharField(min_length=3,max_length=8, label='用户名',error_messages={ 22 'min_length':'密码最少3位', 23 'max_length':'密码多多8位', 24 'required':'用户名不能为空', 25 }) 26 password = forms.CharField(min_length=3,max_length=8, label='密码', 27 error_messages={ 28 'min_length':'密码最少3位', 29 'max_length':'密码多多8位', 30 'required':'密码不能为空', 31 }) 32 confirm_password = forms.CharField(min_length=3,max_length=8, label='密码', 33 error_messages={ 34 'min_length':'确认密码最少3位', 35 'max_length':'确认密码多多8位', 36 'required':'确认密码不能为空', 37 }) 38 email = forms.EmailField(label='邮箱',error_messages={ 39 'invalid':'邮箱格式错误', 40 'required':'邮箱地址不能为空', 41 }) 42 # 局部钩子 43 def clean_username(self): 44 # 获取到用户名 45 username = self.cleaned_data.get('username') 46 if '666' in username: 47 # 提示前端展示错误信息 48 self.add_error('username','光喊666是不行滴~') 49 # 将钩子函数钩去出来数据再放回去,局部钩子返回给校验的字段 50 return username 51 52 # 全局钩子 53 def clean(self): 54 password = self.cleaned_data.get('password') 55 confirm_password = self.cleaned_data.get('confirm_password') 56 if not confirm_password == password: 57 self.add_error('confirm_password','两次密码不一致') 58 # 将钩子函数钩出来数据再放回去,全局的返回给cleaned_data 59 return self.cleaned_data 60
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人