案例程序:

<!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. elasticsearch6.1 安装问题

    问题:Caused by: java.lang.RuntimeException: can not run elasticsearch as root [root@localhost logs]# a ...

  2. stream classdesc serialVersionUID = -7218828885279815404, local class serialVersionUID = 1.

    序列化类时出现的异常! 当某一个类实现java.io.Serializable接口时,该类默认会生成一个private static final long serialVersionUID = 1L; ...

  3. springbootAdmin+eureka集群+swagger

    请移步githubb下载源码.知识共享.(https://github.com/yivvonllh) 或者直接git下载(https://github.com/yivvonllh/spring-clo ...

  4. ASP.NET Core MVC中URL和数据模型的匹配

    Http GET方法 首先我们来看看GET方法的Http请求,URL参数和ASP.NET Core MVC中Controller的Action方法参数匹配情况. 我定义一个UserController ...

  5. Hive 实现 wordcount

    创建表: create table hive_wordcount(context string); load data local inpath '/home/hadoop/files/hellowo ...

  6. CF97C Winning Strategy 构造、图论

    题目传送门:http://codeforces.com/problemset/problem/97/C 题意:给出$n$与一个范围在$[0,1]$内的递增序列$P_0-P_n$,试构造一个无穷序列$\ ...

  7. jQuery webcam plugin

    jQuery webcam plugin The jQuery webcam plugin is a transparent layer to communicate with a camera di ...

  8. css实现按钮固定在底部

    实现类似如下图的功能: 采用如下的样式来控制:

  9. 案例学python——案例三:豆瓣电影信息入库

    闲扯皮 昨晚给高中的妹妹微信讲题,函数题,小姑娘都十二点了还迷迷糊糊.今天凌晨三点多,被连续的警报声给惊醒了,以为上海拉了防空警报,难不成地震,空袭?难道是楼下那个车主车子被堵了,长按喇叭?开窗看看, ...

  10. 【JVM.2】垃圾收集器与内存分配策略

    垃圾收集器需要完成的3件事情: 哪些内存需要回收? 什么时候回收? 如何回收? 在前一节中介绍了java内存运行时区域的各个部分,其中程序计数器.虚拟机栈.本地方法栈3个区域随线程而生,随线程而灭:栈 ...