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>
原文地址:https://www.cnblogs.com/xuechengeng/p/10309102.html