循序渐进PYTHON3(十三) --3-- DJANGO之FORM表单(为自动生成的HTML标签添加样式)
from django.shortcuts import render,HttpResponsefrom django import formsimport jsonimport refrom 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=8,max_length=20,error_messages={'required':'密码不能为空','min_length':'至少6位','max_length':'至多10位'})num = forms.IntegerField(error_messages={'required':'不能为空','invalid':'必须是数字'})# 自定制验证方法关键就是参数validators,和自己的函数关联起来phone = forms.CharField(validators=[mobile_validate,],)# django给标签加sytle,关键参数widget ,forms.TextInput 表示生成type="text"的input标签,改成Textarea则生成<textarea>标签test = forms.CharField(widget=forms.TextInput(attrs={'class':'in_tmp'}))choice =((1,'北京'),(2,'上海'))t_choice = forms.IntegerField(widget=forms.Select(choices=choice))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><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><style>.error-msg{color:red;}.in_tmp{border:1px solid #6a34ff ;}</style></head><body><formaction="/login/"method="POST"><div><div>{{ data.username }}{% if data.errors.username %}<spanclass="error-msg">{{ data.errors.username.0 }}</span>{% endif %}</div><div>{{ data.password }}{% if data.errors.password %}<spanclass="error-msg">{{ data.errors.password.0 }}</span>{% endif %}</div><div>{{ data.num }}{% if data.errors.num %}<spanclass="error-msg">{{ data.errors.num.0 }}</span>{% endif %}</div><div>{{ data.phone }}{% if data.errors.phone %}<spanclass="error-msg">{{ data.errors.phone.0 }}</span>{% endif %}</div><div>{{ data.test }}{% if data.errors.test %}<spanclass="error-msg">{{ data.errors.test.0 }}</span>{% endif %}</div><div>{{ data.t_choice }}{% if data.errors.t_choice %}<spanclass="error-msg">{{ data.errors.t_choice.0 }}</span>{% endif %}</div><inputtype="submit"value="提交"/></div></form></body></html>

循序渐进PYTHON3(十三) --3-- DJANGO之FORM表单(为自动生成的HTML标签添加样式)的更多相关文章
- 循序渐进PYTHON3(十三) --2-- DJANGO之FORM表单(自动生成HTML标签和自定制提示信息)
在上一次的代码上做出进一步修改,使之能在页面上显示自定制的报错信息,并且使用form自动创建标签的功能. views.py from django.shortcuts import render,Ht ...
- 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 ...
- js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题
js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题 js模拟form表单提交数据源码: /** * js模拟form表单提交 * @param ...
- 循序渐进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以及数据提交到服务器的方法. 表单域 ...
随机推荐
- MySQL查看所有用户及拥有权限
查看MYSQL数据库中所有用户 mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM m ...
- js 拖动滑块验证
备注:拖动滑块时尽量平移,chrome浏览器上没有卡顿情况,但是搜狗极速模式和360极速模式都遇到了卡顿,拖不动情况,应是浏览器内部对事件响应速度导致吧. JS代码: ;(function ($,wi ...
- 省队集训 Day5 选举
[题目大意] 小奇和魔法猪要竞选膜钟国的总统. 有 $n$ 个选民,编号为$1...n$,他们中有的人支持小奇,有的人支持魔法猪,还有的人保持中立. 现在你需要把选民分成若干个区间,每个区间的长度在$ ...
- bzoj 1700: [Usaco2007 Jan]Problem Solving 解题 ——dp
Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场 ...
- 27、简述redis的有哪几种持久化策略及比较?
Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执行的所有写操作命令 ...
- aspnet_regiis.exe -i 执行报错
IIS刚部署时出现问题 处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler” 按照网上的步骤,使用管理员打开CMD 开始->所有程 ...
- js中的apply、call、bind
每个函数都包含两个非继承而来的方法,call()和apply(),可以改变函数内部this的指向 1.apply 用另一个对象替换当前对象,接收两个参数,第一个参数表示需要绑定的this变量,第二个参 ...
- Sberbank Russian Housing Market比赛总结
第一次真正意义上参加kaggle比赛,都是工作之余看看别人的kernel,然后整理整理自己的分析代码. 总体来说,本次比赛对我而言更像一个入门比赛,更多的是走走kaggle比赛的整个流程,看看高手们都 ...
- 【tomcat】手动部署动态JavaWeb项目到tomcat
1.通过修改server.xml进行配置 1.查看项目的目录结构: tomcat运行时加载WebConmtent目录
- 2017-2018-1 20179205《Linux内核原理与设计》第六周作业
<Linux内核原理与设计> 视频学习及操作 给MenuOS增加time和time-asm命令的方法: 1.更新menu代码到最新版 rm menu -rf //强制删除menu, rm ...