form组件的功能:
- 检验功能
- 前端生成HTML页面
- 还能保留输入的内容
form组件的用法:
from django import forms # Create your views here. # 定义一个类 class Myform(forms.Form): title = forms.CharField( # 通过from表单进行验证的时候,验证输入title字段的数据,参数用于验证 max_length=20, min_length=2, ) # CharField/DateField等等时用于验证的和models里的没有关系 price = forms.CharField() date = forms.DateField() def test(request): if request.method=="GET": # 实列化一个对象 form_obj = Myform() # 用这个对象去帮我们生成html标签 return render(request,"test.html",{"form_obj":form_obj})
HTML页面:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--生成所有标签--> {{ form_obj.as_p }} <!--生成名字--> {{ form_obj.title.label }} <!--生成标签--> {{ form_obj.title }} <!--所有错误信息--> {{ form_obj.errors }} <!--取一条错误信息--> {{ form_obj.errors.0 }} </body> </html>
给标签添加样式:
给标签更改属性:
对用户输入的内容进行验证:
from django import forms # 按照Django form组件的要求自己写一个类 class RegForm(forms.Form): name = forms.CharField(label="用户名") #form字段的名称写的是什么,那么前端生成input标签的时候,input标签的name属性的值就是什么 pwd = forms.CharField(label="密码") # 使用form组件实现注册方式 def register2(request): form_obj = RegForm() if request.method == "POST": # 实例化form对象的时候,把post提交过来的数据直接传进去 form_obj = RegForm(data=request.POST) #既然传过来的input标签的name属性值和form类对应的字段名是一样的,所以接过来后,form就取出对应的form字段名相同的数据进行form校验 # 调用form_obj校验数据的方法 if form_obj.is_valid(): return HttpResponse("注册成功") return render(request, "register2.html", {"form_obj": form_obj})