form(form基础标签渲染)
Posted mjiu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了form(form基础标签渲染)相关的知识,希望对你有一定的参考价值。
form基础
Django中的Form使用时一般有两种功能:
1、生成html标签
2、验证输入内容
要想使用django提供的form,要在views里导入form模块
from django import forms
首先我们创建我们的模版
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h3>普通方式</h3> <form action=""method="post"> {% csrf_token %} <div> <label for=‘user‘>用户名</label> <p><input type="text" name="name" id="name"></p> </div> <div> <label for=‘pwd‘>密码</label> <p><input type="password" name="pwd" id="pwd"></p> </div> <div> <label for=‘r_pwd‘>确认密码</label> <p><input type="password" name="r_pwd" id="r_pwd"></p> </div> <div> <label for=‘email‘>邮箱</label> <p><input type="email" name="email" id="email"></p> </div> <input type="submit"> </form> </body> </html>
然后我们来定义一个form 类,以及我们需要掌握的一些基础知识,这些代码全部写在 试图页面里。
from django.shortcuts import render,HttpResponse from django.forms import widgets # Create your views here. from django.forms import widgets from django import forms #创建form表单验证规则 class UserForm(forms.Form): name = forms.CharField(min_length=4), pwd = forms.CharField(min_length=6), r_pwd = forms.CharField(min_length=6), email = forms.EmailField(), def index(request): if request.method == ‘POST‘: form = UserForm(request.POST) #如果输入全部符合规则判断为真将结果传递给 changed_data,并打印 print(‘form.is_vaild---------‘,form.is_valid()) if form.is_valid(): print(form.changed_data) #如果失败,打印为真的值,打印错误,获取错误字典中name 的错误值。 else: print(form.cleaned_data) print(‘错误信息的类型---------‘,type(form.errors)) print(form.errors) print(form.errors.get(‘name‘)) return HttpResponse(‘ok‘) form=UserForm() return render(request,‘index.html‘)
如果输入正确的验证信息
后台输出
form.is_vaild--------- True
{‘name‘: ‘召唤精灵‘, ‘pwd‘: ‘1111111111‘, ‘r_pwd‘: ‘1111111111‘, ‘email‘: ‘[email protected]‘}
可以看出输入符合验证条件的数据, is_vaild 会返回 True ,然后正确信息会存储到cleaned_data 中
下面输入一下错误验证信息
form.is_vaild--------- False
错误信息的类型--------- <class ‘django.forms.utils.ErrorDict‘>
获取错误信息字典 <ul class="errorlist"><li>name<ul class="errorlist"><li>Ensure this value has at least 4 characters (it has 3).</li></ul></li></ul>
<ul class="errorlist"><li>Ensure this value has at least 4 characters (it has 3).</li></ul>
可以看到类型是已字典到形式存储到,然后咱们通过字典到的取值方法 get 取到验证错误到报错信息。
如果同时有错误有正确会怎么样
form.is_vaild--------- False
{‘pwd‘: ‘11111111111‘, ‘r_pwd‘: ‘1111111111‘, ‘email‘: ‘[email protected]‘}
错误信息的类型--------- <class ‘django.forms.utils.ErrorDict‘>
获取错误信息字典 <ul class="errorlist"><li>name<ul class="errorlist"><li>Ensure this value has at least 4 characters (it has 3).</li></ul></li></ul>
<ul class="errorlist"><li>Ensure this value has at least 4 characters (it has 3).</li></ul>
虽然验证失败了,但是cleaned_data中保留了正确的验证信息。
标签渲染
方式一
<h3>方式一</h3> <form action="" method="post"> {% csrf_token %} <div> <label for="">用户名</label> {{ form.name }} </div> <div> <label for="">密码</label> {{ form.pwd }} </div> <div> <label for="">确认密码</label> {{ form.r_pwd }} </div> <div> <label for=""> 邮箱</label> {{ form.email }} </div> <input type="submit" > </form>
方式二
需要给form验证条件,添加 label属性
class UserForm(forms.Form): name = forms.CharField(min_length=4,label=‘用户名‘) pwd = forms.CharField(min_length=6,label=‘密码‘) r_pwd = forms.CharField(min_length=6,label=‘确认密码‘) email = forms.EmailField(label=‘邮箱‘)
<h4>方式二</h4> <form action="" method="post"> {% csrf_token %} {% for foo in form %} <div> <label for="">{{ foo.label }}</label> {{ foo }} </div> {% endfor %} <input type="submit">
方式三
<h4>方式三</h4> <form action="" method="post"> {% csrf_token %} {{ form.as_p }} <input type="submit"> </form>
小结:
虽然这三种标签渲染的方式 第三种最为简介方便,但是局限性也最大,不能根据自己的需求调整标签,只能使用他提供的方法,如果常用的话还是选择第二种标签渲染方式。
以上是关于form(form基础标签渲染)的主要内容,如果未能解决你的问题,请参考以下文章
在 Xamarin Forms 自定义标签渲染器中,增加边界的大小
allow_tags=True 不在 django admin 中渲染 <form> 标签