Python3 之 Django Web框架Form组件(二)
程序员文章站
2022-07-03 23:20:20
...
使用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=从数据库查询的值
下一篇: GO web中简单的表单应用
推荐阅读
-
Web框架之Django_08 重要组件(form组件、cookie和session组件)
-
Python3之Django Web框架模型篇(二)
-
Python3之Django Web框架中间件
-
Python3之Django Web框架分页多页码处理二
-
Python3之Django Web框架视图
-
Python3 之 Django Web框架Form组件(二)
-
Python3之Django Web框架模型篇(一)
-
Python3之Django Web框架CMS总结
-
Python3之Django Web框架模板继承篇
-
Web框架之Django_08 重要组件(form组件、cookie和session组件)