Django-website 程序案例系列-16 modle.form(表单验证)
案例程序:
<!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(表单验证)的更多相关文章
- Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)
一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...
- web框架-(六)Django补充---form表单验证
一.form表单验证 1. 常规html页面的form表单验证 常规页面中,如果想实现对表单中用户输入信息的数据验证,需要配合Ajax来实现. 使用前我们先来熟悉下函数参数:request,其中包含的 ...
- django之form表单验证
django中的Form一般有两种功能: 输入html 验证用户输入 #!/usr/bin/env python # -*- coding:utf- -*- import re from django ...
- Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作
一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...
- django form表单验证
一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...
- Django中的Form表单验证
回忆一下Form表单验证的逻辑: 前端有若干个input输入框,将用户输入内容,以字典传递给后端. 后端预先存在一个Form表单验证的基类,封装了一个检测用户输入是否全部通过的方法.该方法会先定义好错 ...
- 第三百一十一节,Django框架,Form表单验证
第三百一十一节,Django框架,Form表单验证 表单提交 html <!DOCTYPE html> <html lang="en"> <head& ...
- Django基础之Form表单验证
Form表单验证 1.创建Form类(本质就是正则表达式的集合) from django.forms import Form from django.forms import fields from ...
- python_way day19 HTML-day5 (form表单验证,CSRF,cookie,session,缓存)
python-way day19 1. dJango的form表单验证 2.CSRF 跨站请求伪造 3.cookie,session 4.缓存 一,django表单验证功能 1.django验证基础: ...
随机推荐
- SpringBoot 异常处理
异常处理最佳实践 根据我的工作经历来看,我主要遵循以下几点: 尽量不要在代码中写try...catch.finally把异常吃掉. 异常要尽量直观,防止被他人误解 将异常分为以下几类,业务异常,登录状 ...
- jQuery webcam plugin
jQuery webcam plugin The jQuery webcam plugin is a transparent layer to communicate with a camera di ...
- jetty 客服端 与服务端
jetty 服务端,客服端有请求buffter 检查 默认4kb 4096 客服端 HttpClient client=new HttpClient(); client.setRequestBuffe ...
- Luogu P1966 火柴排队
这还是一道比较简单的题目,稍微想一下就可以解决.终于有NOIP难度的题目了 首先我们看那个∑(ai-bi)^2的式子,发现这个的最小值就是排序不等式 所以我们只需要改变第一组火柴的顺序,使它和第二组火 ...
- [Oracle]In-Memory的Join Group 位于内存的何处?
In-Memory的Join Group 的数据字典位于内存的何处? 有客户问到,使用Oracle 的In-Memory功能时,如果用到了 Join Group,那么这些这些Join Group,位于 ...
- python语言程序设计5
1, 评估函数eval() 去掉参数最外侧引号并执行余下语句的函数. 比如eval("1"),经过运行可以得到数字 1 去得是单双引号,不是括号哦.. 广泛来说,能将任何字符串的形 ...
- 《RabbitMQ Tutorial》译文 第 1 章 简介
原文来自 RabbitMQ 英文官网的教程(1.Introduction),其示例代码采用了 .NET C# 语言. RabbitMQ is a message broker: it accepts ...
- [T-ARA][ORGR]
歌词来源:http://music.163.com/#/song?id=29343993 作曲 : 4번타자/에스킴 [作曲 : 4p/beon-Ta-c/ja-/e-seu-Kim] 作词 : 4번 ...
- restfull环境搭建-helloword(三)
原文地址:http://only81.iteye.com/blog/1689537 This section creates a CRUD (Create, Read, Update, Delete) ...
- sigar开发(java)
下载sigar,地址:https://yunpan.cn/cBEWbEfdAm98f (提取码:f765) 可以收集的信息 CPU信息:包括基本信息(vendor.model.mhz.cacheSiz ...