用表单验证数据(1)

ModelForm:
大家在写表单的时候,会发现表单中的 Field 和模型中的 Field 基本上是一模一样的,而且表单 中需要验证的数据,也就是我们模型中需要保存的。那么这时候我们就可以将模型中的字段和表单 中的字段进行绑定。

比如现在有个 Article 的模型。示例代码如下:

from django.db import models
from django.core import validators
class Article(models.Model):
    title = models.CharField(max_length=10,validators=[validators.MinLengthValidator(li mit_value=3)])
    content = models.TextField()
    author = models.CharField(max_length=100)
    category = models.CharField(max_length=100)
    create_time = models.DateTimeField(auto_now_add=True)

那么在写表单的时候,就不需要把 Article 模型中所有的字段都一个个重复写一遍了。示例代码 如下:

from django import forms
class MyForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = "__all__"

MyForm 是继承自 forms.ModelForm ,然后在表单中定义了一个 Meta 类,在 Meta 类中指定 了 model=Article ,以及 fields="__all__" ,这样就可以将 Article 模型中所有的字段都复制过 来,进行验证。如果只想针对其中几个字段进行验证,那么可以给 fields 指定一个列表,将需要 的字段写进去。比如只想验证 title 和 content ,那么可以使用以下代码实现:

from django import forms
class MyForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = [‘title‘,‘content‘]

如果要验证的字段比较多,只是除了少数几个字段不需要验证,那么可以使用 exclude 来代 替 fields 。比如我不想验证 category ,那么示例代码如下:

class MyForm(forms.ModelForm):
    class Meta:
        model = Article
        exclude = [‘category‘]

自定义错误消息:
使用 ModelForm ,因为字段都不是在表单中定义的,而是在模型中定义的,因此一些错误消息无 法在字段中定义。那么这时候可以在 Meta 类中,定义 error_messages ,然后把相应的错误消息 写到里面去。示例代码如下:

class MyForm(forms.ModelForm):
    class Meta:
        model = Article
        exclude = [‘category‘]
        error_messages  ={
            ‘title‘:{
                ‘max_length‘: ‘最多不能超过10个字符!‘,
                ‘min_length‘: ‘最少不能少于3个字符!‘
            },
            ‘content‘: {
                ‘required‘: ‘必须输入content!‘,
           }
        }

save方法:
ModelForm 还有 save 方法,可以在验证完成后直接调用 save 方法,就可以将这个数据保存到数 据库中了。示例代码如下:

form = MyForm(request.POST)
if form.is_valid():
    form.save()
    return HttpResponse(‘succes‘)
else:
    print(form.get_errors())
    return HttpResponse(‘fail‘)

这个方法必须要在 clean 没有问题后才能使用,如果在 clean 之前使用,会抛出异常。另外,我 们在调用 save 方法的时候,如果传入一个 commit=False ,那么只会生成这个模型的对象,而不 会把这个对象真正的插入到数据库中。比如表单上验证的字段没有包含模型中所有的字段,这时候 就可以先创建对象,再根据填充其他字段,把所有字段的值都补充完成后,再保存到数据库中。示 例代码如下:

form = MyForm(request.POST)
 if form.is_valid():
    article = form.save(commit=False)
    article.category = ‘Python‘
    article.save()
    return HttpResponse(‘succes‘)
else:
    print(form.get_errors())
    return HttpResponse(‘fail‘)

原文地址:https://www.cnblogs.com/allwell/p/9496258.html

时间: 2024-10-11 04:39:20

用表单验证数据(1)的相关文章

struts2表单验证-原理加基本用法

struts2的表单验证有两种方式[两种方式都是同一个数据验证拦截器(validate)在作用]: 1.手工验证:自己手动写一个validate()方法,实现数据验证. 前提:此action继承ActionSupport或者实现Validateable, ValidationAware接口 该方法中,写数据检查代码,如果有错误就把错误信息添加到值栈中.当值栈中的错误信息不为空,struts2会自动返回一个input的结果 validate()对Action里的全部方法做数据校验 如果只想对Act

html表单提交数据验证

我们在做B/S项目开发中,经常会用到表单提交数据,在页面需要做js数据验证,简单方法如下 js部分: <script type="text/javascript"> function validate_required(field, alerttxt) { with (field) { if (value == null || value == "") { alert(alerttxt); return false } else { return tru

[elementUI]v-for动态数据循环表单验证的处理方式

最近被<哪吒之魔童降世>的主题曲洗脑了,哈哈哈里面有一句歌词是这样的 风跟着我飞有两道火光,天上海里的神仙能耐我何妨 从不拘泥任何世俗凡人的目光,我要奔向前方那光芒 表单验证的时候: prop改为:prop,形式为'formInlineList.'+index+'.formInline' formInlineList.'+index+'.formInline就是数据结构与数据 每一个循环中的<el-form-item>都需要加:rules 去rules时要取吧rules加上取全 结

php基础教程——表单验证(必填、提交后数据保留)

一.表单验证中用到的几个元素记录 1.htmlspecialchars(),用于将用户输入的特殊字符转义为普通字符,比如 < 和 > 之类的 HTML 字符会被替换为 < 和 > 2.$_SERVER["PHP_SELF"] 是一种超全局变量,返回当前页面脚本名字 3.trim()用于删除多余的空格等 4.stripslashes()用于删除用户多输入的反斜线 二.一个简单的表单验证函数 function test_input($str){ $str = tri

数据检验插件: Validate插件 添加自定义表单验证

jQuery.validator.addMethod("ValiPass", function(value, element,params) { var exp = new RegExp(params);//实例化正则对象,参数为传入的正则表达式 return exp.test(value);      //测试是否匹配 }, "密码必须包含数字.字母大.小写.符号四种"); 然后表单验证中 rules: { newPassword: { minlength: 8,

jquery插件,表单验证validation plugin的使用

笔记: 一.首先引入插件 <script type="text/javascript" src="js/jquery-1.10.0.js" ></script> <script type="text/javascript" src="js/jquery.validate-1.13.1.js" ></script> 列子:一个简单的登录表单验证 1 <form id=&quo

AngularJs 表单验证

看到一些博客说这个框架要过时了,但是还是学习了下,觉的很方便的一个框架,有空的同学可以看看,适合我们入门看,比较基础. 对于日常的开发来说,最常见的开发场景就是通过表单编辑数据,这里涉及的问题就是验证问题. angularjs 内置已经支持了常见的验证方式,可以轻松实现表单验证. 1. 绑定 为了方便,我们在 $scope 上下文对象上创建一个 model 来表示我们编辑的内容. $scope.model = { id : 8, name: "alice", email: "

jQuery基础(常用插件 表单验证,图片放大镜,自定义对象级,jQuery UI,面板折叠)

1.表单验证插件--validate   该插件自带包含必填.数字.URL在内容的验证规则,即时显示异常信息,此外,还允许自定义验证规则,插件调用方法如下: $(form).validate({options}) 其中form参数表示表单元素名称,options参数表示调用方法时的配置对象,所有的验证规则和异常信息显示的位置都在该对象中进行设置.     2.表单插件--form 通过表单form插件,调用ajaxForm()方法,实现ajax方式向服务器提交表单数据,并通过方法中的option

PHP常用的表单验证

<?php /** * 页面作用:常用表单验证类 */ class class_post { //验证是否为指定长度的字母/数字组合 function fun_text1($num1,$num2,$str) { return (preg_match("/^[a-zA-Z0-9]{".$num1.",".$num2."}$/",$str))?true:false; } //验证是否为指定长度数字 function fun_text2($num