Django之组件--forms
forms组件(详细)
功能:
1 校验字段功能 2 渲染标签功能 3 渲染错误信息功能 4 组件的参数配置 5 局部钩子 6 全局钩子
类中使用:
1.定义
from django import forms from django.forms import widgets from django.core.exceptions import ValidationError
2.写一个类
3.写属性
class RegForm(forms.Form): name=forms.CharField(max_length=8,min_length=3,label='用户名',error_messages={'max_length':'超长了'}, widget=widgets.TextInput(attrs={'class':'form-control'})
4.局部钩子函数
def clean_name(self): name=self.cleaned_data.get('name') if name.startswith('sb'): raise ValidationError('不能以sb开头') else: # 切记,如果正确,一定要返回name return name
5.全局钩子函数
def clean(self): #一系列逻辑判断 #如果校验通过:返回cleaned_data #如果校验不通过:raise ValidationError('两次密码不一致'),错误放到__all__ pass
views中使用:
def test(request): if request.method=='GET': regform=RegForm() else: regform=RegForm(request.POST) if regform.is_valid(): #一般情况需要存数据库了 pass else: error_all=regform.errors.get('__all__') # error_all=regform.errors['__all__'] return render(request,'register.html',locals())
模板中使用:
<form action=""> {% for foo in regform %} {{ foo.label }}:{{ foo }} <span>{{ foo.errors.0 }}</span> {% endfor %} <input type="submit"> <span>{{ error_all }}</span> </form>