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。请看下面代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form action="/llll/" method="post">
    {% csrf_token %}
    <p>{{ obj.user.label }}:{{ obj.user }} {{obj.errors.user.0}}</p>
    <p>{{ obj.pwd.label }}{{obj.pwd}} {{ obj.errors.pwd.0 }}</p>
    <p>{{ obj.email.label }}{{ obj.email }}{{ obj.errors.email.0 }}</p>
    {{ obj.city1 }}
    {{ obj.city2 }}
    <input type="submit" value="提交">
</form>
 </body>
</html>

通过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,‘河南’)])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值