form模块的简介与用处

1.form 是前后端交互的一种方式, form表单提交的一种,django中有一个模块是form他主要用处就过滤前端form提交的数据

1. forms 模块是处理前后台的页面渲染作用:
2. forms 可以吧后端的异常处理反馈给前端消息,还可以设置用户输入的匹配法则, 有局部钩子做过滤,还有全局钩子做过滤

2.forms 模块检测前端提交的数据是否合法, 可以自定义局部钩子和全局钩子进行判断

后端:
from django import forms
class CheckForm2(forms.Form):
# 校验需求:账号必须不能以数字开头
usr = forms.CharField(min_length=3, max_length=10, label="账号:",
error_messages={
'required': "必填项",
'min_length': "最少3",
'max_length': "最多10"
})
pwd = forms.CharField(min_length=3, max_length=10, label="密码:",
error_messages={
'required': "必填项",
'min_length': "最少3",
'max_length': "最多10"
},
widget=forms.PasswordInput(attrs={
'class': 'pwd', #定义class
'placeholder': '请输入密码' #设置默认提示
})
)
re_pwd = forms.CharField(min_length=3, max_length=10, label="确认:",
error_messages={
'required': "必填项",
'min_length': "最少3",
'max_length': "最多10"
},
widget=forms.PasswordInput) #设置成密文输入
email = forms.EmailField(label="邮箱:",
error_messages={
'invalid': "格式不正确",
'required': "必填项"
}
) # 局部钩子:对usr进行局部钩子的校验,该方法会在usr属性校验通过后,系统调用该方法继续校验
def clean_usr(self):
cleaned_usr = self.cleaned_data.get('usr', None) # type: str
# 通过正则匹配不能以数字开头
import re
if re.match('^[0-9]', cleaned_usr):
from django.core.exceptions import ValidationError
raise ValidationError('不能以数字开头')
return cleaned_usr # 全局钩子:代表校验类中的所有属性校验通过后,系统调用该方法继续校验
def clean(self):
cleaned_pwd = self.cleaned_data.get('pwd', None)
cleaned_re_pwd = self.cleaned_data.get('re_pwd', None)
if cleaned_pwd != cleaned_re_pwd:
from django.core.exceptions import ValidationError
raise ValidationError('两次密码不一致')
return self.cleaned_data def register2(request):
if request.method == "GET":
check_form2 = CheckForm2() #这里一定要生成空对象,不然前端东西无法看到,渲染到
if request.method == "POST":
check_form2 = CheckForm2(request.POST)
if check_form2.is_valid():
return HttpResponse('注册成功')
else:
print(check_form2.errors.as_data) #这个是局部的,把后端的报错信息渲染给前端, 这个单个属性
all_error = check_form2.errors.get('__all__') #把后端的报错信息渲染给前端页面显示 ,全局都能显示出来
return render(request, 'register2.html', locals())

后端的视图函数案例

{#渲染方式二#}
<form action="" method="post" novalidate>
{% for ele in check_form2 %} //循环列表中的对象//
<p>
<label for="">{{ ele.label }}</label> /对象的label标签属性显示
{{ ele }}
<span style="color: red;">{{ ele.errors.0 }}</span> /去数组中的第一个就对了/ j
{% if ele == check_form2.re_pwd %}
<span style="color: red;">{{ all_error.0 }}</span> /设置特定的报错信息渲染/
{% endif %}
</p>
{% endfor %}
<input type="submit" value="注册">
</form>
<hr>
{#渲染方式一#}
<form action="" method="post" novalidate>
<p>
<label for="id_usr">账号:</label>
{{ check_form2.usr }}
</p>
<p>
<label for="id_pwd">密码:</label>
{{ check_form2.pwd }}
</p>
<p>
<label for="id_re_pwd">确认:</label>
{{ check_form2.re_pwd }}
</p>
<p>
<label for="id_email">邮箱:</label>
{{ check_form2.email }}
</p>
<input type="submit" value="注册">
</form> </body>
</html>

前端的页面渲染处理

#主要作用就是进行用户注册进行二次过滤, 比如不能数字开头,确认密码与第一次输入密码是否一致等等!!!

Django之form模板的使用的更多相关文章

  1. Django之Form组件

    Django之Form组件 本节内容 基本使用 form中字段和插件 自定义验证规则 动态加载数据到form中 1. 基本使用 django中的Form组件有以下几个功能: 生成HTML标签 验证用户 ...

  2. Django基础——Form&Ajax篇

    一 Form 在实际的生产环境中,登录和注册时用户提交的数据浏览器端都会使用JavaScript来进行验证(比如验证输入是否为空以及输入是否合法),但是浏览器可能会禁用JavaScirpt,同时也有人 ...

  3. 第十一篇:web之Django之Form组件

    Django之Form组件   Django之Form组件 本节内容 基本使用 form中字段和插件 自定义验证规则 动态加载数据到form中 1. 基本使用 django中的Form组件有以下几个功 ...

  4. Django的Form

    Django的Form有两个基本用途: 1.用于生成html的Form表单 2.用于后台做表单验证 #!/usr/bin/env python # -*- coding:utf-8 -*- impor ...

  5. Django之Form、ModelForm 组件

    Django之Form.ModelForm 组件 一.Form组件: django框架提供了一个form类,来处理web开发中的表单相关事项.众所周知,form最常做的是对用户输入的内容进行验证,为此 ...

  6. Django Model Form

    ModelForm ModelForm结合了Form和Model,将models的field类型映射成forms的field类型,复用了Model和Model验证, 写更少的代码,并且还实现了存储数据 ...

  7. WEB框架Django之Form组件

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一 通过form实现校验字段功能 模型:mod ...

  8. Django学习---Form组件认证

    Form组件认证 能够帮助我们做用户认证. 以前写我们自己写用户认证的时候,我们自己写HTML的form表单,点击提交,数据就被发送到后台,后台进行验证.在验证过程中我们就需要自己去写正则表达式去匹配 ...

  9. Django框架之模板语法【转载】

    Django框架之模板语法 一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 一.模板语法之变量:语法为 {{ }}: 在 Django ...

随机推荐

  1. AFN\HTTPS\UIWebView

    1.AFN使用技巧 1.在开发的时候可以创建一个工具类,继承自我们的AFN中的请求管理者,再控制器中真正发请求的代码使用自己封装的工具类. 2.这样做的优点是以后如果修改了底层依赖的框架,那么我们修改 ...

  2. 【leetcode】443. String Compression

    problem 443. String Compression Input ["a","a","b","b"," ...

  3. Python学习笔记(day23更新)

    第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 等组成,只有硬件但硬件之间无法进行交流和通信. 1.2 操作系统 作用:操作系统用于协同 ...

  4. java 加密工具类(MD5、RSA、AES等加密方式)

    1.加密工具类encryption MD5加密 import org.apache.commons.codec.digest.DigestUtils; /** * MD5加密组件 * * @autho ...

  5. 如何在Linux系统下挂载光盘

    工具/原料 Linux 方法/步骤   找到光盘的完整路径名.在命令行输入:ls -l /dev | grep cdrom. 可以看到光盘的名字叫做:cdrom1.然后在命令行执行: mount /d ...

  6. Coprime Sequence (HDU 6025)前缀和与后缀和的应用

    题意:给出一串数列,这串数列的gcd为1,要求取出一个数使取出后的数列gcd最大. 题解:可以通过对数列进行预处理,求出从下标为1开始的数对于前面的数的gcd(数组从下标0开始),称为前缀gcd,再以 ...

  7. 巡风安装配置 -windows

    巡风是一款适用于企业内网的漏洞快速应急.巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表. 其主体分为两部分:网络资产识别引擎,漏 ...

  8. 使用vsftp服务传输文件

  9. 用我所学去讲C语言指针

    文章更新,更加详细的介绍请看这篇:https://www.cnblogs.com/lulipro/p/7460206.html 很多人不敢讲C的指针,有些人讲不清,有些人怕讲错.初生牛犊不怕虎,就让我 ...

  10. 菜鸟Vue学习笔记(二)

    上一篇文章跟大家分享了Vue笔记上半部分,这篇文章接着跟大家分享.最近学习Vue越来越顺利了,今天接着学习,接着记录. 首先,来学习下常用的v-bind属性,它的作用是在属性中使用vue中定义的变量的 ...