form组件的功能:

  1. 检验功能
  2. 前端生成HTML页面
  3. 还能保留输入的内容

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>

给标签添加样式:

Django-form组件

 

给标签更改属性:

Django-form组件

对用户输入的内容进行验证:

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})
View视图

相关文章:

  • 2021-05-27
  • 2022-03-01
  • 2022-02-12
  • 2022-12-23
猜你喜欢
  • 2021-12-27
  • 2021-08-28
  • 2021-07-25
  • 2021-06-29
  • 2021-06-29
相关资源
相似解决方案