django:form组件

django中的form为用户提供验证,并且form组件也可以生成html
在我们通过
下列代码来创建form组件,

from django import forms
from django.forms import widgets
from django.forms import fields

class user_conform(forms.Form):
    user=fields.CharField( error_messages={'required': '用户名不能为空.'},
        widget=widgets.TextInput(attrs={'class': 'c1'}),
        label="用户名",
        )
    email = fields.EmailField(error_messages={'required': '邮箱不能为空.','invalid':"邮箱格式错误"})
    pwd=fields.CharField(max_length=11,
                         min_length=6,
        error_messages={'required':'密码不能为空','max_length':'密码不能超过11位','min_length':'密码不能低于6位'})
    city1=fields.ChoiceField(choices=[(0,'北京'),(1,'上海'),(2,'广州')])
    city2=fields.MultipleChoiceField(choices=[(0,'山西'),(1,'陕西'),(2,'河南')])

这里user_form类中的字段,必须与要验证的html中标签的name相同。
在form验证时。可以通过obj.is_valid()方法拿到验证结果是false还是true

  def login_test(request):
        #假设从数据库取到数据dict
        if request.method=='GET':
    
            dict={'user':'欧文',
              'email':'krtr@163.com',
              'pwd':'kaierteren',
              'city1':1,
              'city2':[0,2]
              }
            form_obj=user_conform(initial=dict)
            #将得到的数据放到user_conform中
    
            return render(request,'login_test.html',{'obj':form_obj})
        else:
            obj=user_conform(request.POST)
            #将post数据传到form组件验证
            if obj.is_valid():
                print(type(obj.cleaned_data))
                #可以拿到验证正确的数据
            else:
                return render(request,'login_test.html', {'obj': obj})
        return HttpResponse('成功')

form组件也可以用来生成html,在上述代码中,后台向前端返回的是user_conform类的对象,这个对象可以生成html。请看下面代码。




    
    


{% csrf_token %}

{{ obj.user.label }}:{{ obj.user }} {{obj.errors.user.0}}

{{ obj.pwd.label }}{{obj.pwd}} {{ obj.errors.pwd.0 }}

{{ obj.email.label }}{{ obj.email }}{{ obj.errors.email.0 }}

{{ obj.city1 }} {{ obj.city2 }}

通过obj.user.label, obj.user, obj.errors.user.0 我们可以生成html标签,取到标签数据,错误信息等。
这些在form类里设置。
class user_conform(forms.Form):
user=fields.CharField( error_messages={‘required’: ‘用户名不能为空.’},#这里设置错误信息
widget=widgets.TextInput(attrs={‘class’: ‘c1’}),
label=“用户名”,
)#这里设置标签信息
email = fields.EmailField(error_messages={‘required’: ‘邮箱不能为空.’,‘invalid’:“邮箱格式错误”})
pwd=fields.CharField(max_length=11,
min_length=6,
error_messages={‘required’:‘密码不能为空’,‘max_length’:‘密码不能超过11位’,‘min_length’:‘密码不能低于6位’})
city1=fields.ChoiceField(choices=[(0,‘北京’),(1,‘上海’),(2,‘广州’)])
city2=fields.MultipleChoiceField(choices=[(0,‘山西’),(1,‘陕西’),(2,‘河南’)])

你可能感兴趣的:(django)