Python3 之 Django Web框架Form组件(二)
来源:互联网 发布:ubuntu 休眠 编辑:程序博客网 时间:2024/06/07 01:07
使用Form组件步骤
1.首先自定义一个类,继承Form类; from django.forms import Form class TeacherForm(Form):2.在自定义类中添加类属性,这个属性要和models中的对应模型类的属性名一致,后面可以处理数据时方便; name = fields.CharField( required=True, error_messages={'required': '用户名不能为空'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': '请输入用户名'}), validators = [RegexValidators(正则表达式,不满足正则的提示)] )3.定义函数处理已经通过Form组件验证的数据,可以处理一些用户名和密码和数据库的校验: def clean_name(): return sth 需要注意的是:函数名必须以clean_开头,字段的值必须是当前字段的值,必须要有返回值; 该函数称为钩子函数,为什么要这么定义呢?看下源码就明白了: if field.disabled: value = self.get_initial_for_field(field, name) else: value = field.widget.value_from_datadict(self.data, self.files,self.add_prefix(name)) try: if isinstance(field, FileField): initial = self.get_initial_for_field(field, name) value = field.clean(value, initial) else: value = field.clean(value) self.cleaned_data[name] = value if hasattr(self, 'clean_%s' % name): value = getattr(self, 'clean_%s' % name)() self.cleaned_data[name] = value except ValidationError as e: self.add_error(name, e) 在校验数据时,如果数据库没有就raise ValidationError('用户名或密码错误')4.下拉框的数据实时刷新怎么处理: 可以重写init方法: __init__(self,*args,**kwargs): super().__init__(*args,**kwargs) self.fields['字段'].choices=从数据库查询的值
阅读全文
1 0
- Python3 之 Django Web框架Form组件(二)
- Python3 之 Django Web框架优化查询和Form组件(一)
- Python3之Django Web框架模型篇(二)
- Python3之Django Web框架分页多页码处理二
- Python3之Django Web框架模型篇(一)
- Python3之Django Web框架视图
- Python3之Django Web框架安装mysqlclient
- Python3之Django Web框架CMS总结
- Python3之Django Web框架中间件
- Django之Form组件
- Python3之Django Web框架模板继承篇
- Python3之Django Web框架F对象,Q对象
- Python3之Django Web框架首页分页处理升级版
- Python3之Django Web框架分页多页码处理一
- Django框架学习笔记(25.Form组件验证)
- Python3之Django框架搭建详细步骤
- Python3之Django Web框架URL匹配、反向解析及部分错误处理
- Python3之Django Web框架模板篇(templates)与自定义filter与tag
- 2017-11-6离线赛总结
- maven package 打包test出错导致打包失败
- Java 静态类、静态方法和静态变量
- 为虚拟世界服务:罗技推出VR键盘“Bridge”系统
- shiro名词介绍
- Python3 之 Django Web框架Form组件(二)
- js全局变量和局部变量的作用域分析
- 数据库性能优化详解
- JZOJ5457. 【NOIP2017提高A组冲刺11.6】项链
- 正则表达式
- Tomact8部署在linux下启动很慢
- js 中的转义字符
- Cmake 找不到OpenCVConfig.cmake文件
- android中对launchMode和task的理解