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的更多相关文章
随机推荐
- 23.Nginx+keepalived负载均衡高可用
Nginx+keepalived负载均衡高可用 结构图 环境: 主 服务器:192.168.239.10 备 服务器:192.168.239.20 Web 服务器1:192.168.239.40 We ...
- JS:自增和自减
自增自减是一元操作符运算 1.++: 前置++:先把取值,再把变量的值加1 后置++:先把变量的值加1,再取值 2.--: 前置--:先把取值,再把变量的值加1 后置--:先把变量的值加1,再取值 v ...
- Java 泛型中的通配符
本文内容如下: 1. 什么是类型擦除 2.常用的 ?, T, E, K, V, N的含义 3.上界通配符 < ?extends E> 4.下界通配符 < ?super E> 5 ...
- 如何用python做出老师看了都给满分的GUI学生管理系统毕设
序 言 哈喽大家好鸭!我是小熊猫 最近有什么有趣的事情发生吗?快来说给我听听( •̀ ω •́ )✧表弟大学快毕业了,学了一个学期Python居然还不会写学生管理系统,真的给我丢脸啊,教他又不肯学,还 ...
- # vue3 ref 和 reactive 函数
vue3 ref 和 reactive 函数 前言 上一篇博文介绍 setup 函数的时候,最后出现一个问题,就是在 setup 函数中,编写一个事件,直接去修改定义的变量,发现页面上没有更新成功,并 ...
- Codeforces Round #789 (Div. 2)
题集链接 A. Tokitsukaze and All Zero Sequence 题意 Tokitsukaze 有一个长度为 n 的序列 a. 对于每个操作,她选择两个数字 ai 和 aj (i≠j ...
- Effective C++阅读笔记 较详细 复杂条款带样例
一.让自己习惯C++ 条款01:视C++为一个语言联邦 C++可视为: C:以C为基础. 面向对象的C++:添加面向对象特性. 模板C++:泛型编程概念,使用模板. STL:使用STL的容器.迭代器. ...
- STC8H开发(十三): I2C驱动DS3231高精度实时时钟芯片
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- Redis 内存优化神技,小内存保存大数据
大家好,我是「码哥」,大家可以叫我靓仔. 这次码哥跟大家分享一些优化神技,当你面试或者工作中你遇到如下问题,那就使出今天学到的绝招,一招定乾坤! 如何用更少的内存保存更多的数据? 我们应该从 Redi ...
- 用KVM安装MacOS/OSX
基本步骤按照大牛的步骤https://github.com/kholia/OSX-KVM 黑果镜像建议用黑果小兵的:macOS Big Sur(我试过,大牛的更卡),里面的双EFI就很够用. 将镜像名 ...