django_day07
django_day07
django form组件
form组件的定义
class RegForm(forms.Form):
user = forms.CharField(label='用户名')
pwd = forms.CharField(label='密码')
使用
def reg2(request):
form_obj = RegForm()
if request.method == 'POST':
#对提交的数据做校验
form_obj = RegForm(request.POST)
if form_obj.is_valid():#对数据进行校验
#校验成功
return HttpResponse('注册成功')
return render(request,'reg2.html',{'form_obj':form_obj})
模板
{{ form_obj.as_p }} 一次性生成所有的input框
{{ form_obj.user }} 生成该字段的input框
{{ form_obj.user.label }} 该字段提示的信息
{{ form_obj.user.id_for_label }} 该字段的input框的id
{{ form_obj.errors }} 所有字段的错误
{{ form_obj.user.errors.0 }} 该字段的错误
常用字段
CharField 文本输入框
ChoiceField 单选 默认是select
MultipleChoiceField 多选 默认是select
字段参数
initial = "张三" 默认值
choices 用户选择数据
error_messages={} 自定义错误信息
widget=forms.PasswordInput 修改input框的类型 required=False, 是否必填
disabled=False, 是否禁用
校验
校验器
def check_name(value):
#不符合规则
if 'lsl' in value:
raise ValidationError("德玛西亚") #捕获错误i
#符合规则不做任何操作 user = forms.CharField(
....
validators=[check_name],#校验器
... )
使用内置的校验器
from django.core.validators import RegexValidator phone = forms.CharField(validators=[RegexValidator(r'^1[3-9]\d{9}$','手机号格式不正确')])钩子函数
局部钩子
#写在类里面
def clean_user(self):#局部钩子
#不符合校验规则
value = self.cleaned_data.get('user')
if 'lsl' in value:
raise ValidationError("德玛西亚") # 捕获错误i
#符合校验规则
return value
全局钩子
def clean(self):#全局钩子
#不符合校验规则 pwd = self.cleaned_data.get('pwd')
re_pwd = self.cleaned_data.get('re_pwd')
if pwd != re_pwd:
#将错误信息加入某个字段里面
self.add_error('re_pwd','两次密码不一致')
raise ValidationError('两次密码不一致')
#符合校验规则 return self.cleaned_data
django_day07的更多相关文章
随机推荐
- LVGL库入门教程04-样式
LVGL样式 LVGL样式概述 创建样式 在 LVGL 中,样式都是以对象的方式存在,一个对象可以描述一种样式.每个控件都可以独立添加样式,创建的样式之间互不影响. 可以使用 lv_style_t 类 ...
- 二:动手实操SpringBoot-使用Spring Initializr创建项目
使用 Spring Initializr 初始化 Spring Boot 项目 Spring Initializr 从本质上说就是一个Web应用程序,它能为你构建Spring Boot项目结构. 虽然 ...
- linux中CentOS配置文件编辑错误撤回
未编辑状态下 U键 撤销 DD 快速删除
- Java 图片生成PDF
public static void main(String[] args) { String imageFolderPath = "E:\\Tencet\\图片\\test\\" ...
- 网络通讯之Socket-Tcp(一)
网络通讯之Socket-Tcp 分成3部分讲解: 网络通讯之Socket-Tcp(一): 1.如何理解Socket 2.Socket通信重要函数 网络通讯之Socket-Tcp(二): 1.简单So ...
- 鹏城杯 WEB_WP
简单的PHP GET /?code=[~%8C%86%8C%8B%9A%92][~%CF]([~%9A%91%9B][~%CF]([~%98%9A%8B%9E%93%93%97%9A%9E%9B%9A ...
- Tapdata 肖贝贝:实时数据引擎系列(六)-从 PostgreSQL 实时数据集成看增量数据缓存层的必要性
摘要:对于 PostgreSQL 的实时数据采集, 业界经常遇到了包括:对源库性能/存储影响较大, 采集性能受限, 时间回退重新同步不支持, 数据类型较复杂等等问题.Tapdata 在解决 Pos ...
- throw关键字和Objects非空判断_requireNonNull方法
作用: 可以使用throw关键字在指定的方法中抛出指定的异常 使用格式: throw new xxxException("异常产生的原因") 注意: 1.throw关键字必须写在方 ...
- SP96 SHOP-Shopping 题解
\(To\) \(SP96\) 这是一道比较简单的 \(bfs\) ,初学者可以锻炼一下自己理解题意和改代码的能力. 题目中有几个细节: \(n\) 和 \(m\) 的输入顺序,应该先输入 \(m\) ...
- 题解 洛谷 P2388 阶乘之乘
目录 简要题意 题解 主要思路 一个 \(\omega(n)\) 的算法 一个 \(O(\log n)\) 的算法 一个算法 代码 算法 \(1\)(\(\omega(n)\)) 算法 \(2\) 算 ...