1.先导入forms模块

  1. from django import forms

2.创建模板的类

  1. class loginform(forms.Form):
  2. # 2、模板中的元素
  3. name = forms.CharField(min_length=6,error_messages={"requird":"用户名不能为空","min_length":"最小长度为6"})
  4. # requird这个是错误码
  5.  
  6. email = forms.EmailField()

这里这个error_messages写出错的信息,每个不同的错误码对应不同的报错信息

3.在视图函数中使用这个类

  1. def login(request):
  2. if request.method.lower() == "post":
  3. # 3、创建一个模板的对象,然后把数据传递个这个对象
  4. obj = loginform(request.POST)
  5.  
  6. # 4、启动校验
  7.  
  8. status= obj.is_valid()
  9. print(status)
  10.  
  11. # 5、正确的信息
  12. success_dict = obj.clean()
  13. print(success_dict)
  14.  
  15. # 6、错误的信息
  16. failed_dict = obj.errors.as_json()
  17. print(failed_dict)
  18. return redirect("/app1/login")
  19. else:
  20. return render(request,"login.html")

更多验证支持:

  1. forms.CharField(
  2.  
  3. # 这个属性是charfiled特有的
  4. # max_length=233,最大的字符长度
  5. # min_length=234,最小的字符长度
  6.  
  7. # 下面这些属性是filed都有的,下面参数都可以用下面的参数
  8.  
  9. # required=True 是否必填
  10. # label=None 就是显示一个字符串,在前台渲染的时候用obj.arg1.label就会显示label的值,只是一个锦上添花的作用
  11. # initial=None 这里就是一个默认值,也就是初始值
  12. # help_text=''这里就是一个帮助信息
  13.  
  14. # error_messages=None 出错的时候显示的信息
  15.  
  16. # show_hidden_initial=False 是否生成带有默认值的一个隐藏的标签,可以用来判断现在的输入值和默认值是否相同
  17.  
  18. # validators=() 自定义一个正则表达式
  19.  
  20. # localize=False 是否支持本地化,暂时不需要掌握
  21.  
  22. # disabled=False 标签是否能否能编辑
  23.  
  24. # label_suffix=None 默认这个值就是冒号,也就是前面label的值和input框之间的冒号,如果设置了这个值,就会替代lable和input框中之间的冒号
  25.  
  26. # error_messages=None
  27. # error_messages={"required":"不能为空","invalid":"格式错误",}
  28.  
  29. )

  

  1. forms.IntegerField(
  2. # max_value=23, 最大值
  3. # min_value=21. 最小值
  4. )
  5.  
  6. forms.FloatField(
  7.  
  8. )
  1. arg4 = forms.DateField(
  2. # 页面必须要满足这个格式,格式是:2015-09-03
  3. )
  4.  
  5. arg5 = forms.TimeField(
  6. # 页面必须要满足这个格式,格式是:11:34
  7. )
  8.  
  9. arg6 = forms.DateTimeField(
  10. # 页面必须要满足这个格式,格式是:2015-09-03 11:34
  11. )

  

  1. arg7 = forms.EmailField(
  2.  
  3. )
  4.  
  5. arg8 = forms.PasswordInput(
  6.  
  7. )
  8.  
  9. arg9 = forms.RegexField(
  10. # 通过正则表达式自定义字段
  11. )
  12.  
  13. arg10 = forms.FileField(
  14.  
  15. )
  16.  
  17. arg11 = forms.ImageField(
  18.  
  19. )
  20.  
  21. # 单选框
  22. arg12 = forms.ChoiceField(
  23. initial=2,
  24. choices=((1,"内蒙古"),(2,"黑龙江"),(3,"广东"))
  25. )
  26.  
  27. # 多选框
  28. arg13 = forms.MultipleChoiceField(
  29. initial=[1,2],
  30. choices=((1,"内蒙古"),(2,"黑龙江"),(3,"广东"))
  31. )
  32.  
  33. arg14 = forms.FilePathField(
  34. # recursive=False 是否递归显示,是否显示文件下的文件
  35.  
  36. # 指定一个路径,会把这个路径下所有的文件和路径用select框显示出来
  37. )
  38.  
  39. arg15 = forms.GenericIPAddressField(
  40. # 解析ip地址
  41. )
  42. arg16 = forms.SlugField(
  43. # 只允许输入,字母数字和下划线减号
  44. )
  45.  
  46. arg17 = forms.UUIDField(
  47. # 只支持uuid格式的输入
  48. )
  49. # 这里的arg*就是k值

  

  1. f8 = fields.ChoiceField(
  2. choices=[(1, "上海3"), (2, "北京3"), (3, "深圳3")],
  3. initial=3,
  4. required=True,
  5. label="城市",
  6. label_suffix="------>"
  7. )
  8.  
  9. f9 = fields.TypedChoiceField(
  10. choices=[(1, "上海4"), (2, "北京4"), (3, "深圳4")],
  11. initial=3,
  12. required=True,
  13. coerce=lambda x:int(x)
  14. )
  15.  
  16. f10 = fields.MultipleChoiceField(
  17. choices=[(1, "上海5"), (2, "北京5"), (3, "深圳5")],
  18. initial=[1,3,]
  19. )
  20.  
  21. f11 = fields.TypedMultipleChoiceField(
  22. choices=[(1, "上海5"), (2, "北京5"), (3, "深圳5")],
  23. initial=[1, 3, ],
  24. coerce=lambda x:int(x),
  25. )
  26.  
  27. f12 = fields.FilePathField(path="app1",allow_folders=True,recursive=False,allow_files=)
  28.  
  29. # recursive:递归显示,true不显示,false显示
  30. # allow_folders:是否显示文件夹
  31. # allow_files:是否显示文件
  32.  
  33. f13 = fields.GenericIPAddressField(
  34. protocol="both"
  35. )
  36.  
  37. f13 = fields.SlugField()
  38. # 只允许数字,字母,下划线,减号

  

Django之form表单的数据验证的更多相关文章

  1. django做form表单的数据验证

    我们之前写的代码都没有对前端input框输入的数据做验证,我们今天来看下,如果做form表单的数据的验证 在views文件做验证 首先用文字描述一下流程 1.在views文件中导入forms模块 2. ...

  2. Django之form表单提交并验证

    1.提交的时候会报错 2. 需要在setting里面注释掉一句话,关闭跨站请求检查. 3. 注释掉以后,理论上就不报错了.可我还是卡壳了. 4. 通过在网上找方法,修复错误. 原因:表单action字 ...

  3. Django的form表单

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

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

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

  5. 转载:Django之form表单

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

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

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

  7. javascprit form表单提交前验证以及ajax返回json

    1.今天要做一个手机验证码验证的功能.需求是前端页面点击发送 短信验证码,后台接收后通过ajax返回到前端,之后前端在提交时候进行验证.思路很简单,不过做的过程还是学到不少的东西. 1.ajax请求后 ...

  8. thinkPHP5.0使用form表单提交数据和删除文章,不用TP的提示页面,使用弹出提示信息

    form表单提交数据和删除文章时,TP的默认信息提示页面的看起来不是很好看,想要实现弹窗提示怎么做呢? 前端:可以使用前端的一个知识--iframe,iframe元素会创建包含另外一个文档的内联框架: ...

  9. form表单的ajax验证2

    form表单的ajax验证2: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

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

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

随机推荐

  1. webpack笔记-webpack初识与构建工具发展(一)

    为什么需要构建工具? 转换 ES6 语法 转换 JSX CSS 前缀补全/预处理器 压缩混淆 图片压缩 前端构建演变之路 ant + YUI Tool grunt gulp.fis3 webpack. ...

  2. Jmeter、postman、python 三大主流技术如何操作数据库?

    1.前言 只要是做测试工作的,必然会接触到数据库,数据库在工作中的主要应用场景包括但不限于以下: 功能测试中,涉及数据展示功能,需查库校验数据正确及完整性:例如商品搜索功能 自动化测试或性能测试中,某 ...

  3. Nuxt Kit中的 Nitro 处理程序

    title: Nuxt Kit中的 Nitro 处理程序 date: 2024/9/21 updated: 2024/9/21 author: cmdragon excerpt: 摘要:本文详细介绍了 ...

  4. Linux工具:Winscp显示隐藏的文件

    事件起因: 需要用Winscp上传文件到服务器,然后发现文件被隐藏了 解决办法: Winscp软件的快捷键 : Ctrl + Alt + HWindscp软件的设置方法: 菜单栏 选项 -> 面 ...

  5. Thinkphp原生验证码的使用

    Thinkphp原生验证码的使用 一. 获取验证码 public function verifyCode(){ $captcha = new \think\captcha\Captcha(); $ca ...

  6. 【USB3.0协议学习】Topic3·三种Reset Events分析

    USB3.0中的三种Reset Events 1. PowerOn Reset PowerOn Reset被用来代指上电复位,当一个device接入到root hub或者外置hub的时候,该devic ...

  7. Android Systrace 基础知识 -- Why 60 fps ?

    1.正文 今天来讲一下为何我们讲到流畅度,要首先说 60 帧. 我们先来理一下基本的概念: 60 fps 的意思是说,画面每秒更新 60 次 这 60 次更新,是要均匀更新的,不是说一会快,一会慢,那 ...

  8. 将读取的.raw文件转换为tensor张量送入网络

    # coding:utf-8 import numpy as np import torch # 首先确定原图片的基本信息:数据格式,行数列数,通道数 rows=886#图像的行数 cols=492# ...

  9. 在Vue3中如何实现四种全局状态数据的统一管理?

    四种全局状态数据 在实际开发当中,会遇到四种全局状态数据:异步数据(一般来自服务端).同步数据.同步数据又分为三种:localstorage.cookie.内存.在传统的 Vue3 当中,分别采用不同 ...

  10. js正则表达式 禁止输入汉字

    const validateChinese = (rule, value, callback) => { var regex = /[\u4e00-\u9fa5]/; console.log(' ...