views.py

  1. from django.shortcuts import render,HttpResponse
  2. from django import forms
  3. import json
  4. import re
  5. from django.core.exceptions importValidationError
  6. # Create your views here.
  7. def mobile_validate(value):
  8. mobile_re = re.compile(r'^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$')
  9. ifnot mobile_re.match(value):
  10. raiseValidationError('手机号码格式错误')
  11. classInputForm(forms.Form):
  12. # 下面使用的变量名必须和html中input标签的name值相同
  13. # forms 的字段类型包括:IntegerField,CharField,URLField,EmailField,DateField等,但是没有手机号
  14. # required=True表示对输入做验证
  15. # error_messages 自定制提示信息
  16. username = forms.CharField(required=True, error_messages={'required':'用户名不能为空'})
  17. password = forms.CharField(required=True,
  18. min_length=8,
  19. max_length=20,
  20. error_messages={'required':'密码不能为空','min_length':'至少6位',
  21. 'max_length':'至多10位'}
  22. )
  23. num = forms.IntegerField(error_messages={'required':'不能为空','invalid':'必须是数字'})
  24. # 自定制验证方法关键就是参数validators,和自己的函数关联起来
  25. phone = forms.CharField(validators=[mobile_validate,],)
  26. # django给标签加sytle,关键参数widget ,forms.TextInput 表示生成type="text"的input标签,改成Textarea则生成<textarea>标签
  27. test = forms.CharField(widget=forms.TextInput(attrs={'class':'in_tmp'}))
  28. choice =(
  29. (1,'北京'),
  30. (2,'上海')
  31. )
  32. t_choice = forms.IntegerField(widget=forms.Select(choices=choice))
  33. def login(request):
  34. if request.POST:
  35. objPost =InputForm(request.POST)
  36. ret = objPost.is_valid()
  37. if ret:
  38. print(objPost.clean())
  39. # else:
  40. # # from django.forms.utils import ErrorDict
  41. # print(type(objPost.errors),objPost.errors.as_json())
  42. return render(request,'login.html',{'data': objPost})
  43. else:
  44. objGet =InputForm()
  45. return render(request,'login.html',{'data': objGet})
login.html
  1. <!DOCTYPE html>
  2. <htmllang="en">
  3. <head>
  4. <metacharset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. .error-msg{
  8. color:red;
  9. }
  10. .in_tmp{
  11. border:1px solid #6a34ff ;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <formaction="/login/"method="POST">
  17. <div>
  18. <div>
  19. {{ data.username }}
  20. {% if data.errors.username %}
  21. <spanclass="error-msg">{{ data.errors.username.0 }}</span>
  22. {% endif %}
  23. </div>
  24. <div>
  25. {{ data.password }}
  26. {% if data.errors.password %}
  27. <spanclass="error-msg">{{ data.errors.password.0 }}</span>
  28. {% endif %}
  29. </div>
  30. <div>
  31. {{ data.num }}
  32. {% if data.errors.num %}
  33. <spanclass="error-msg">{{ data.errors.num.0 }}</span>
  34. {% endif %}
  35. </div>
  36. <div>
  37. {{ data.phone }}
  38. {% if data.errors.phone %}
  39. <spanclass="error-msg">{{ data.errors.phone.0 }}</span>
  40. {% endif %}
  41. </div>
  42. <div>
  43. {{ data.test }}
  44. {% if data.errors.test %}
  45. <spanclass="error-msg">{{ data.errors.test.0 }}</span>
  46. {% endif %}
  47. </div>
  48. <div>
  49. {{ data.t_choice }}
  50. {% if data.errors.t_choice %}
  51. <spanclass="error-msg">{{ data.errors.t_choice.0 }}</span>
  52. {% endif %}
  53. </div>
  54. <inputtype="submit"value="提交"/>
  55. </div>
  56. </form>
  57. </body>
  58. </html>
效果图:

 
select 标签显示数据库数据:

循序渐进PYTHON3(十三) --3-- DJANGO之FORM表单(为自动生成的HTML标签添加样式)的更多相关文章

  1. 循序渐进PYTHON3(十三) --2-- DJANGO之FORM表单(自动生成HTML标签和自定制提示信息)

    在上一次的代码上做出进一步修改,使之能在页面上显示自定制的报错信息,并且使用form自动创建标签的功能. views.py from django.shortcuts import render,Ht ...

  2. Django的form表单

    html的form表单 django中,前端如果要提交一些数据到views里面去,需要用到 html里面的form表单. 例如: # form2/urls.py from django.contrib ...

  3. Django 11 form表单(状态保持session、form表单及注册实现)

    Django 11 form表单(状态保持session.form表单及注册实现) 一.状态保持 session 状态保持 #1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状 ...

  4. 转载:Django之form表单

    转载: 一.使用form类创建一个表单 先定义好一个RegForm类: forms.py from django import forms # 导入forms类 class NameForm(form ...

  5. Django--分页器(paginator)、Django的用户认证、Django的FORM表单

    分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['joh ...

  6. js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题

    js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题 js模拟form表单提交数据源码: /** * js模拟form表单提交 * @param ...

  7. 循序渐进Python3(十三) --0-- django之form表单

    django为我们提供了form表单验证功能,下面来学习一下: 武sir博客:http://www.cnblogs.com/wupeiqi/articles/5246483.html  创建了djan ...

  8. django之form表单验证

    django中的Form一般有两种功能: 输入html 验证用户输入 #!/usr/bin/env python # -*- coding:utf- -*- import re from django ...

  9. django中form表单的提交:

    一,关于表单: 表单在百度百科的解释:   表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域 ...

随机推荐

  1. Sass 基本函数

    Sass 中的常用函数 一.字符串函数 1. unquote($string): 删除字符串前后的引号,删除一对引号,如果这个字符串没有带有引号,将返回原始的字符串. 示例: .text1 { con ...

  2. mysql 并发测试

    针对上一节做一些针对公司业务的测试. 我们来做一些压力测试. 服务器配置: 操作系统: centos 5.6-64 CPU: 8核 内存: 8G 硬盘:sas 文件系统:linux MySQL:5.6 ...

  3. Jenkins有用的插件

    1. Multijob plugin: 多个任务同时运行 2. ssh slave plugin: 用于安装slave? Allows to launch over ssh, using a java ...

  4. uva10766生成树计数(矩阵树定理)

    更正了我之前打错的地方,有边的话G[i][j]=-1; WA了好多次,中间要转成long double才行..这个晚点更新. #include<cstdio> #include<cs ...

  5. 实现拷贝函数(strcpy)

    #include <stdio.h> #include <stdlib.h> // 函数声明 char *mystrcpy(char *object, char *source ...

  6. Transformation(线段树+HDU4578+多种操作+鬼畜的代码)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4578 题目: 题意:n个数初始值为0,进行四种操作:1.将区间内的数字加c:2.将区间内的数字乘c:3 ...

  7. 完全背包问题入门 (dp)

    问题描述: 有n种重量和价值分别为Wi,Vi的物品,从这些中挑选出总重量不超过W的物品,求出挑选物品的价值总和的最大值,每种物品可以挑选任意多件. 分析: 令dp[i+1][j]表示从前i件物品中挑选 ...

  8. 网络应用框架Netty快速入门

    一 初遇Netty Netty是什么? Netty 是一个提供 asynchronous event-driven (异步事件驱动)的网络应用框架,是一个用以快速开发高性能.可扩展协议的服务器和客户端 ...

  9. linux下删除已经不用的配置文件

    使用命令 dpkg -l | grep -v ^ii 查看当前未安装或者不用了的配置文件 例如我的显示如下

  10. linux 3389连接工具Rdesktop

    简单使用 工作机换成战斗机了,改用ubuntu,原来的windows7上东西笔记多,还不想重装.用rdesktop来远程连接windows: sudo apt-get install rdesktop ...