model里面进行数据验证

  1. 在类里面定义一个clean方法
	class User(models.Model):
def clean(self):
#在这个可以做一些验证的操作
pass
  1. 还可以手动抛出异常
from django.core.exceptions import ValidationError

	raise ValidationError(message="XX错误",code="i1")

clean方法的内容实际是空的,是Python预留的可以自定义的hooks

在view里面进行model验证

需要写上这个方法

obj.full_clean()

full_clean分为两步:

1. 正则验证,比如emailfield 会验证是否是邮箱格式的

2. 进行clean方法验证,而这个clean是存在model里面的,所以需要在model里面写 clean方法

form的choicefield

from django.forms.models import ModelChoiceField

class User(forms.Form):
user_type = fields.ChoiceField(
# choices=[(1,'普通用户'),(2,'超级用户'),],
choices= [],
widget=widgets.Select
) user_type2 = fields.CharField(widget=widgets.Select(choices=[])) user_type3 = ModelChoiceField(
empty_label='请选择用户类型',
queryset=models.UserType.objects.all(),
to_field_name='id'
) def __init__(self,*args, **kwargs):
super(UserInfoForm,self).__init__(*args, **kwargs) self.fields['user_type'].choices = models.UserType.objects.values_list('id','name')
self.fields['user_type2'].widget.choices = models.UserType.objects.values_list('id','name')

重写构造方法,这样每次数据修改完之后就不需要重新运行程序了进行前端展示的更新

如果要使用ModelChoiceField的话需要,在models里面写

>def __str__(self):
> return self.name
>```
>如果不写的话,下拉框只会显示对象类型 **默认_\_str_\_** def __str__(self):
if six.PY2 and hasattr(self, '__unicode__'):
return force_text(self).encode('utf-8')
return str('%s object' % self.__class__.__name__)

Python自动化之form验证的更多相关文章

  1. Python自动化之form验证二

    class LoginForm(forms.Form): user = fields.CharField() pwd = fields.CharField(validators=[]) def cle ...

  2. python自动化开发-[第二十一天]-form验证,中间件,缓存,信号,admin后台

    今日概要: 1.form表单进阶 2.中间件 3.缓存 4.信号 5.admin后台 上节课回顾 FBV,CBV 序列化 - Django内置 - json.dumps(xxx,cls=) Form验 ...

  3. Python Django的分页,Form验证,中间件

    本节内容 Django的分页 Form 中间件 1 Django 分页 1.1 Django自带的分页 1.首先来看下我的测试数据环境 ############ models.py ######### ...

  4. Nodejs之MEAN栈开发(四)---- form验证及图片上传

    这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能.开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R ...

  5. tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片

    本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...

  6. Selenium2+python自动化7-xpath定位

    前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...

  7. Python自动化运维之31、Tornado框架

    Tornado 官网:http://www.tornadoweb.org/en/stable/ Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本. ...

  8. Python自动化运维之28、Django(二)

    一.FORM 1.概述 django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm 关于django的表单系统,主要分两种 基于django.for ...

  9. form验证及图片上传

    form验证及图片上传 这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能.开始之前需要源码同学可以先在git上fork:https://github.com/ ...

随机推荐

  1. Linux安装jdk,编写helloworld程序

    今天学习了Linux安装jdk,做个笔记记录一下. 第一步,确定Linux是32位的还是64位的,然后到oracle官网上下载对应版本的jdk,一般下载.tar.gz文件.查看Linux的版本的命令是 ...

  2. Docker for Windows(二)登录与配置镜像加速器

    一.启动Docker for Windows 通过桌面Docker Desktop启动,右下角出现的白色鲸鱼图标保持稳定时,表示Docker正在正常运行,将鼠标移到图标上会显示"Docker ...

  3. 【MUI框架】学习笔记整理 Day 2

    参考整理自MUI官网 http://dev.dcloud.net.cn/mui/ui/ (1)numbox(数字输入框) mui提供了数字输入框控件,可直接输入数字,也可以点击“+”.“-”按钮变换当 ...

  4. Java 接口和多态

    接口 1.1 接口的概述 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样 ...

  5. Android实战——GreenDao3.2的使用,爱不释手

    1前言 GreenDao是一款操作数据库的神器,经过了2.0版本的升级后,已经被广泛的开发者使用.确实是很好用,入门简单,可以剩去了数据库的建表操作和数据库SQL的编写,博主用了一次之后爱不释手,和以 ...

  6. needPrint 不显示打印按钮

     客户问题:       客户用的是needPrint 来显示打印按钮,现在访问不能显示后台提示有错误 打开控制台显示: java.security.AccessControlException: ...

  7. 如何从 GitHub 上下载单个文件夹

    DownGit 好用记得回来点赞(建议***)

  8. maven 项目目录图与web 应用结构图对比

    web应用结构图 -war | | | |++++META-INF | | |----WEB-INF | | |-classes | | |com/baidu/controller/Controlle ...

  9. justreq测试接口配置服务

    特性 自动缓存每一次接口请求,当测试服务器宕机时,依然可以从容开发 接口替身服务,当后台GG们还没开发好接口时,可以用json.txt等替代 独有jrs脚本,仿php,可以定制更灵活的接口替身,甚至可 ...

  10. GoldenGate搭建与运维

    GolenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库实时 ...