Django ==> Form 组件
目录:
1.基本使用
2.form中字段和插件
3.自定义验证规则
4.动态加载数据到form中
Action:
1.基本使用
django 中的Form组件有一下功能:
1.生成html标签
2.验证用户数据(显示错误信息)
3.html form 提交保留上次提交数据
4.初始化页面显示内容
要使用 form 类,首先需要创建这个类,方法如下:
from django.forms import Form from django.forms import widgets #插件 可新增属性 from django.forms import fields #字段 class MYForm(Form): #继承Form类 user = fields.CharField( widget = widgets.TextInput(attrs={‘id‘:‘i1‘,‘class‘:‘c1‘}) #定义生成的html标签类型是input的text框,attrs:添加属性 id 为i1, class为:c1 ) gender = fields.ChoiceFields( choices = ((1,‘男‘),(2,‘女‘),), #定义下来框的选型,元祖第一个值为option的value值,后面为html里面的值 initial = 2, #默认选中第二个option widget = widgets.RadioSelect # 插件表现形式为单选按钮 ) city = fields.CharField( initial = 2, # 初始值2 widget = widgets.Select(choices=((1,‘上海‘),(2,‘北京‘),)) #插件表现形式为下来框) pwd = fields.CharField( widget = widgets.PasswordInput(attrs={‘class‘:‘c1‘}, render_value=True) #插件形式为密码输入框 )
之后在views视图中定义:
from django.shortcuts import render,redirect from .forms import MyForm def index(request): if request.method =="GET": obj = MyForm() #没有值 ,在页面上渲染form中的标签 return render(request,"index.html",{"form":obj}) elif request.method == "POST": obj = MyForm(request.Post,request.FILES) #将POST提交出来的数据作为参数传递给自定义的Form类 if obj.is_valid(): # obj.is_valid() 返回一个bool值,如果检查通过返回True,否则返回 False。 values = obj.clean() #拿到处理后的所有数据,键值对的形式 print(values) else: errors = obj.errors #拿到未通过的错误信息,里面封装的都是对象 print(errors) return render(request,"index.html",{"form":obj} else: return redirect("http://www.baidu.com")
模板定义:
<form action="/" method="POST" enctype="multipart/form-data"> <p>{{form.user}} {{form.errors.user.0}}<p> # {{form.user}} 生成标签, {{form.user.errors}} 生成第一个错误信息 <p>{{form.gender}} {{form.errors.gender.0}} </p> <p>{{ form.city }} {{ form.errors.city.0 }}</p> <p>{{ form.pwd }} {{ form.errors.pwd.0 }}</p> </form>
其他相关的标签
<form method="POST" enctype="multipart/form-data"> {% csrf_token %} {{ form.xxoo.label }} {{ form.xxoo.id_for_label }} {{ form.xxoo.label_tag }} {{ form.xxoo.errors }} <p>{{ form.user }} {{ form.user.errors }}</p> <input type="submit" /> </form>