循序渐进PYTHON3(十三) --3-- 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=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以及数据提交到服务器的方法. 表单域 ...
随机推荐
- 确保web安全的https、确认访问用户身份的认证(第七章、第八章)
第七章 确保web安全的https 1.http的缺点: (1)通信使用明文,内容可能会被窃听 (2)不验证通信方的身份,因此有可能遭遇伪装 (3)无法证明报文的完整性,因此有可能已遭篡改. 2.通信 ...
- 【vijos】P1083 小白逛公园
[算法]线段树 [题解] 学自:https://vijos.org/p/1083/solution(wang_yanheng的回答) 回溯时维护一段区间的以下域: sumL:从左端点起连续区间的最大和 ...
- Vuejs - 深入浅出响应式系统
Vue 最独特的特性之一,是其非侵入性的响应式系统.数据模型仅仅是普通的 Javascript 对象.而当你修改它们时,视图会进行更新.这使得状态管理非常简单直接,不过理解其工作原理同样非常重要,这样 ...
- 【洛谷 P1129】 [ZJOI2007]矩阵游戏 (二分图匹配)
题目链接 看到题目肯定首先会想到搜索. 然鹅数据范围\(n<=200\)这么大(其实也不算太大),肯定是不行的. 如果\((i,j)\)是\(1\),从\(i\)向\(j\)连一条边,表示第\( ...
- vue装逼神器简述
主要是分享下用vuejs开发项目过程中遇到的问题,vuejs开发的优势和需要注意的地方. 项目主要页面:主页,最新,分类,分类列表,详情页,结果页,斗图(列表,制作页) 效果图: 地址:https:/ ...
- 科猫网项目总结(基于SSM框架)
1.配置文件的添加 SSM整合需要web.xml配置文件,springmvc的配置文件,spring和mybatis整合的配置文件. 1.web.xml文件的配置 1.在WEB-INF下新建web.x ...
- js_同步和异步
刚开始写js那会,对这一块是知之甚少,太多太多的知识不足,致使做什么都很艰难.现在工作也有段时间了,知识也有了点积累, 写点什么分享一下. 同步和异步?这个问题是在使用ajax请求后台数据的时候出现的 ...
- 类图(Class Diagram)
类图(Class Diagram): 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 类一般由三部分组成: 类名(Class):每个类都必须 ...
- sqlmap参数说明
--delay 设置每隔几秒测试一次注入 --safe-url 设置sqlmap要访问的正常url --safe-freq 设置每测试多少条注入语句后才去访问safe-url --code 设置能正常 ...
- js 实时显示字数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...