django-form

1 from的作用
1 生成html标签
2 校验数据
3 保留用户输入的内容
from django import forms
from api import models

def xxx(value):
raise ValidationError('xxx')

class LoginForm(forms.Form):
name = forms.CharField(
label='用户名',
initial='初始值',
error_messages={'required':'必须填写'},
widget=forms.PasswordInput(attrs={})
validators=[]
)
def clean_name(self): 局部钩子
# 通过校验 返回当前的字段的值
# 没通过 抛出错误
def clean(self): 全局钩子
# 通过校验 返回全部的值
# 没通过 抛出错误
self.add_error('x','xx')

2 modelform 是可以靠数据库生成标签
class LoginForm(forms.ModelForm):
class Meta:
model = models.UserInfo # 指定数据库
fields = '__all__' # 指定数据库字段
exclude=[]
error_messages={}

def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs):


3 视图里面用法
GET里面
obj = models.Login.objects.get(id=cid) 更新使用
loginform_obj = LoginForm() instance=obj
return render(request,'xx.html',{'loginform_obj':loginform_obj})
传到html文件里 循坏
{% for foo in bookModel %}
<div>
<label for="{{ foo.id_for_label }}">{{ foo.label }}</label>
{{ foo }}
<span style="color: red;font-size: 14px">{{ foo.errors.0 }}</span>
</div>
{% endfor %}
POST
obj = models.Login.objects.get(id=cid) 更新使用
loginform_obj = LoginForm(request.POST) instance=obj
if loginform_obj.is_valid(): 判断是否通过校验
loginform_obj.save()
return redict('home')
return render(request,'xx.html',{'loginform_obj':loginform_obj})

4 modelformset

posted @ 2020-08-17 14:00  李淳罡zZ  阅读(87)  评论(0)    收藏  举报