案例程序:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/fm/" method="POST"> #3个输入框分别是user/pwd/email
{% csrf_token %}
<input type="text" name="user" />
<input type="text" name="pwd" />
<input type="text" name="email" />
<input type="submit" value="提交" />
</form>
</body>
</html>

views函数:

from django import forms   # 首先需导入forms包

class FM(forms.Form):     #建立一个验证类
user = forms.CharField(error_messages={'required': '用户名不能为空'}) #自定制的中文错误返回
pwd = forms.CharField(
max_length='12',
min_length='8',
error_messages={'required': '密码不能为空', 'max_length': '密码最大长度不能大于12', 'min_length': '密码最小长度不能小于8'}
)
email = forms.EmailField(error_messages={'required': '邮箱不能为空', 'invalid': '邮箱格式错误'}) def fm(request):
if request.method == "GET":
return render(request, 'fm.html')
elif request.method == "POST":
# 获取用户的所有数据
# 每条数据请求的验证
# 成功:获取所有的正确信息
# 失败:显示错误信息
obj = FM(request.POST) #生成一个表单验证类
r1 = obj.is_valid() #验证输出的结果 成功为true 错误为false
print(r1)
if r1:
print(obj.cleaned_data) #如果成功返回验证好的数据并打印
else:
print(obj.errors.as_json) #如果失败返回错误信息打印
return redirect('/fm/')

显示的信息:

达到了自定制返回的错误信息为中文的目的

向前端送出验证错误信息:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/fm/" method="POST">
<p><input type="text" name="user" /> {{ obj.errors.user.0 }} </p> #前端显示验证错误信息
<p><input type="text" name="pwd" /> {{ obj.errors.pwd.0 }} </p>
<p><input type="text" name="email" /> {{ obj.errors.email.0 }} </p>
<input type="submit" value="提交" /> </form>
</body>
</html>
def fm(request):
if request.method == "GET":
obj = FM()
return render(request, 'fm.html', {'obj': obj}) # 传送一个验证数据对象obj
elif request.method == "POST":
# 获取用户的所有数据
# 每条数据请求的验证
# 成功:获取所有的正确信息
# 失败:显示错误信息
obj = FM(request.POST)
r1 = obj.is_valid()
print(r1)
if r1:
print(obj.cleaned_data)
else:
print(obj.errors)
return render(request, 'fm.html', {'obj': obj})
return render(request, 'fm.html')

完整的注册页面的简单表单验证加注册:

def fm(request):
if request.method == "GET":
obj = FM()
return render(request, 'fm.html', {'obj': obj})
elif request.method == "POST":
obj = FM(request.POST)
r1 = obj.is_valid()
if r1:
models.UserInfo.objects.create(**obj.cleaned_data) #直接一条语句数据注册成功
else:
return render(request, 'fm.html', {'obj': obj})
return render(request, 'fm.html')

  

使用forms类生成字段和html标签:

from django.forms import widgets  # widgets是生成html标签的插件
from django.forms import fields  # 在定义forms类时建议最好使用fields来表示字段
class FM(forms.Form):
user = fields.CharField(error_messages={'required': '用户名不能为空'}, # 自定义错误
widgets=widgets.Textarea(attrs={'class': 'c1'}),#调用插件widgets 然后生成Textarea标签(多行文本输入框) 然后添加属性attrs(class=c1)
)
pwd = fields.CharField(
max_length='12',
min_length='8',
error_messages={'required': '密码不能为空', 'max_length': '密码最大长度不能大于12', 'min_length': '密码最小长度不能小于8'},
widgets=widgets.PasswordInput(attrs={'class': 'c2'}), #调用插件widgets 然后生成PasswordInout标签(多行文本输入框) 然后添加属性attrs(class=c2)
) email = fields.EmailField(error_messages={'required': '邮箱不能为空', 'invalid': '邮箱格式错误'})

  

生成的标签:

Django-website 程序案例系列-16 modle.form(表单验证)的更多相关文章

  1. Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)

    一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...

  2. web框架-(六)Django补充---form表单验证

    一.form表单验证 1. 常规html页面的form表单验证 常规页面中,如果想实现对表单中用户输入信息的数据验证,需要配合Ajax来实现. 使用前我们先来熟悉下函数参数:request,其中包含的 ...

  3. django之form表单验证

    django中的Form一般有两种功能: 输入html 验证用户输入 #!/usr/bin/env python # -*- coding:utf- -*- import re from django ...

  4. Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作

    一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...

  5. django form表单验证

    一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...

  6. Django中的Form表单验证

    回忆一下Form表单验证的逻辑: 前端有若干个input输入框,将用户输入内容,以字典传递给后端. 后端预先存在一个Form表单验证的基类,封装了一个检测用户输入是否全部通过的方法.该方法会先定义好错 ...

  7. 第三百一十一节,Django框架,Form表单验证

    第三百一十一节,Django框架,Form表单验证 表单提交 html <!DOCTYPE html> <html lang="en"> <head& ...

  8. Django基础之Form表单验证

    Form表单验证 1.创建Form类(本质就是正则表达式的集合) from django.forms import Form from django.forms import fields from ...

  9. python_way day19 HTML-day5 (form表单验证,CSRF,cookie,session,缓存)

    python-way day19 1. dJango的form表单验证 2.CSRF 跨站请求伪造 3.cookie,session 4.缓存 一,django表单验证功能 1.django验证基础: ...

随机推荐

  1. 奇怪的组数length属性

    Java中的数组其实也是一个对象,但是确实是一个特殊的对象,实在是太特殊了,继承自Object, 多出一个属性length,改写了clone方法.   我debug了数组对象的运行时的Class对象, ...

  2. 【SQL】MaxComputer中调试与问题排查技巧小结

    1.分段调试 面对长的SQL,出错时一般直接看定位的行号,有时候不出错但是没数据时,应该尝试分段调试,很长的SQL嵌套很多的子查询时,一个一个子查询进行分别调试,看哪一步子查询出了问题,层层推进 2. ...

  3. MiniProfiler工具介绍(监控EF生成的SQL语句)--EF,迷你监控器,哈哈哈

    十年河东,十年河西,莫欺少年穷... 今天是抄袭的别人的博客,不过我感觉蛮好,挺有用,特别是老板让你优化EF项目SQL耗时的情况下,你可以采用这种方式来优化你的LINQ. 时间很宝贵,废话还是不多说, ...

  4. HDU 6165 FFF at Valentine

    题目大意:给出一个有向图,问你这个图中是否对于任意两点\(u,v\),都至少满足\(u\to v\)(\(u\)可到达\(v\),下同)或\(v\to u\)中的一个. 一看就是套路的图论题,我们先把 ...

  5. koa2入门(2) koa-router 路由处理

    项目地址:https://github.com/caochangkui/demo/tree/koa-test 1. 创建项目 创建目录 koa-test npm init 创建 package.jso ...

  6. PMO在组织中实现价值应做的工作

    PMO在组织中实现价值应做的工作 研发人员及项目经理常常对PMO有反感情绪,认为其不熟悉业务流程与技术.经常要求项目经理和研发人员提交形式化的材料,只审批和监控,不能为项目提供良好的服务.在很多企业, ...

  7. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(2)--云硬盘等后续配置

    继上一篇博客介绍了完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建,本篇继续讲述后续部分的内容 1 虚拟机相关1.1 虚拟机位置介绍 openstack上创建的 ...

  8. linux-shell-引用-命令替换-命令退出状态-逻辑操作符

    命令替换:bash7步扩展的之一 嵌套  这里没什么意义 退出状态可以参与逻辑判断 表达式 算数表达式和条件表达式,逻辑表达式 查看passwd命令比,避免用户捕获输入密码的接口 这种方式就可以直接输 ...

  9. 函数:this & return、break、continue、exit()

    this this:的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象在调用的时候才能决定,谁调用的就指向谁. 情景1:指向 ...

  10. git使用(2)

    1.远程仓库 a SSHKEY 第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到 ...