2. form组件使用

半世苍凉 提交于 2019-11-28 10:16:59

1. 校验前端来的数据

2. 生成页面的HTML标签

3. 保留上次输入的内容,清空密码

form类创建

from django import forms

class UserInfo(forms.Form):

  user = forms.CharField(max_length = 32)

  age = forms.InterField( )

  email = forms.EmailField( )

 

使用

fm = UserInfor({"user":"fu", "age":20, "email":"123@qq.com"})

检查数据是否合法:fm.is_vaild( )  返回True 和 False

查看所有合法的数据  ret = fm.cleaned_data( )   用get获取到user, age , email的值

查看不合法数据和原因 ret = fm.error( )  

form标签渲染


1. {{  fm.as_p  }} 渲染出所有的表单 

2. {{  fm.user  }}, {{   fm.age  }}  渲染指定表单 可控性强 , 在表单类中指定 label属性 {{  fm.user.label  }}

3. 依靠循环写入

{%  for hm in fm  %}

  {{  hm.label  }}{{   fm  }}

  {{  hm.error  }}

{%  endfor  %}

在视图函数中, 传入前端的保存正确的校验数据 fm = fm.cleaned_data( )

在下一次输入的时候不用再次输入已经正确的数据

form标签添加css样式

from django import forms
class UserInfo(forms.Form):  msg = {"required":"改字段不能为空"}
  user = forms.CharField(max_length = 32)  age = forms.InterField( )    email = forms.EmailField( 
        widget = widgets.TextInput(attrs={'class': 'form-control'}),     label = "邮箱",     error_msg = msg,     initial = "默认值"    
)        

此处给email标签添加了btn的css样式,字段为空时报错, 渲染时显示的默认值

钩子

from django import formsfrom django.core.exceptions import ValidationError
# 登录表单 class UserInfoForm(forms.Form):   user = forms.charField(max_length = 32)   password = forms.CharField(max_length = 32)   email = forms.EmailField( )     def clean_user(self):     user = self.cleaned_data.get("user")     ret = UserInfo.objects.filter(user=user) # 在数据库中查到数据     if ret :       return ret     else:       raise validateError("用户名不存在") 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!