循序渐进PYTHON3(十三) --2-- DJANGO之FORM表单(自动生成HTML标签和自定制提示信息)
from django.shortcuts import render,HttpResponse
from django import forms
import json
import re
from django.core.exceptions importValidationError
# Create your views here.
def mobile_validate(value):
mobile_re = re.compile(r'^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$')
ifnot mobile_re.match(value):
raiseValidationError('手机号码格式错误')
classInputForm(forms.Form):
# 下面使用的变量名必须和html中input标签的name值相同
# forms 的字段类型包括:IntegerField,CharField,URLField,EmailField,DateField等,但是没有手机号
# required=True表示对输入做验证
# error_messages 自定制提示信息
username = forms.CharField(required=True, error_messages={'required':'用户名不能为空'})
password = forms.CharField(required=True,
min_length=6,
max_length=10,
error_messages={'required':'密码不能为空','min_length':'至少6位',
'max_length':'至多10位'}
)
num = forms.IntegerField(error_messages={'required':'不能为空','invalid':'必须是数字'})
# 自定制验证方法关键就是参数validators,和自己的函数关联起来
phone = forms.CharField(validators=[mobile_validate,],)
def login(request):
if request.POST:
objPost =InputForm(request.POST)
ret = objPost.is_valid()
if ret:
print(objPost.clean())
# else:
# # from django.forms.utils import ErrorDict
# print(type(objPost.errors),objPost.errors.as_json())
return render(request,'login.html',{'data': objPost})
else:
objGet =InputForm()
return render(request,'login.html',{'data': objGet})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.error-msg{
color:red;
}
</style>
</head>
<body>
<form action="/login/" method="POST">
<div>
<div>
{{ data.username }}
{%if data.errors.username %}
<span class="error-msg">{{ data.errors.username.0}}</span>
{% endif %}
</div>
<div>
{{ data.password }}
{%if data.errors.password %}
<span class="error-msg">{{ data.errors.password.0}}</span>
{% endif %}
</div>
<div>
{{ data.num }}
{%if data.errors.num %}
<span class="error-msg">{{ data.errors.num.0}}</span>
{% endif %}
</div>
<div>
{{ data.phone }}
{%if data.errors.phone %}
<span class="error-msg">{{ data.errors.phone.0}}</span>
{% endif %}
</div>
<input type="submit" value="提交"/>
</div>
</form>
</body>
</html>


循序渐进PYTHON3(十三) --2-- DJANGO之FORM表单(自动生成HTML标签和自定制提示信息)的更多相关文章
- Django 之 form表单
Django中的Form表单 1.背景 平时我们在书写form表单时,经常都是手动的去写一些input标签,让用户输入一些功能,进行一些校验的判断,等等.Django中的form表单就能够帮我们去实现 ...
- Django的form表单
html的form表单 django中,前端如果要提交一些数据到views里面去,需要用到 html里面的form表单. 例如: # form2/urls.py from django.contrib ...
- Django 11 form表单(状态保持session、form表单及注册实现)
Django 11 form表单(状态保持session.form表单及注册实现) 一.状态保持 session 状态保持 #1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状 ...
- 转载:Django之form表单
转载: 一.使用form类创建一个表单 先定义好一个RegForm类: forms.py from django import forms # 导入forms类 class NameForm(form ...
- Django--分页器(paginator)、Django的用户认证、Django的FORM表单
分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['joh ...
- [oldboy-django][2深入django]老师管理 -- form表单如何生成多选框标签,多选框的默认值显示,以及多选框数据插入到数据库,多选框数据更改到数据库
1 form表单如何生成多选框(包含了多选框可选择内容) - Form设置班级输入框为 select多选 - 多选 class TeacherForm(Form): name = fields.Cha ...
- 循序渐进Python3(十三) --0-- django之form表单
django为我们提供了form表单验证功能,下面来学习一下: 武sir博客:http://www.cnblogs.com/wupeiqi/articles/5246483.html 创建了djan ...
- django之form表单验证
django中的Form一般有两种功能: 输入html 验证用户输入 #!/usr/bin/env python # -*- coding:utf- -*- import re from django ...
- django中form表单的提交:
一,关于表单: 表单在百度百科的解释: 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域 ...
随机推荐
- MyBatis框架的使用及源码分析(七) MapperProxy,MapperProxyFactory
从上文<MyBatis框架中Mapper映射配置的使用及原理解析(六) MapperRegistry> 中我们知道DefaultSqlSession的getMapper方法,最后是通过Ma ...
- c# Stream to File的知识点
个人倾向使用File.WriteAllByte写入文件: //Stream to File MemoryStream ms=...Stream; ms.Position = ; byte[] buff ...
- Python代码解决RenderView窗口not found问题
源 起 Error:setParent: Object 'renderView' not found 这是一个在工作中很常见的问题,以前做特效的时候有10%的概率会碰到,多发生在打开其他组交接来的Ma ...
- 【LibreOJ】#538. 「LibreOJ NOIP Round #1」数列递推
[题意]LibreOJ [算法]乱搞 [题解]容易发现数列最后一定单调,最后单调递增则最大值赋为最后一个,反之最小值赋为最后一个,然后处理一些细节就可以AC,要注意以下几点: 1.数列连续三项以及数列 ...
- hibernate单列的多值查询
比如你的表主键是id,你要删除id 是 34,56,99 这样的.. uid是拼好的 比如 '34','56','99' ,以前我会这样写 String queryString = "upd ...
- pam_examples
blank.c /* * $Id$ */ /* Andrew Morgan (morgan@parc.power.net) -- a self contained `blank' * applicat ...
- $scope作用及模块化解决全局问题
$scope对象就是一个普通的JavaScript对象,我们可以在其上随意修改或添加属性.$scope对象在AngularJS中充当数据模型,但与传统的数据模型不一样,$scope并不负责处理和操作数 ...
- 【COGS2622】后缀平衡树
这是个后缀平衡树的裸题.... 然后傻逼的我调了一下午. #include<bits/stdc++.h> typedef long long ll; using namespace std ...
- HDU 5118 GRE Words Once More!
题目链接:HDU-5118 题意:给定一个有向无环图,每条边有一个权值.标定一些特定节点为“特殊节点”.从节点1出发到某“特殊节点”结束的路径,称为一个“GRE单词”.单词由路径上的权值组成.给定一组 ...
- linux指令和文件系统
linux root用户的主目录是 /root , 其余用户在 /home 中: tar 常用 tar -zxvf : 安装使用 yum or wget website: mv a.g b.g 重命名 ...