1、form

from django import forms
from django.core.exceptions import ValidationError #出现异常时用的
from user import models #validators的先验证
#第一步验证
def test_phone(value):
print('test_phone',3)
if len(value) != 11:
raise ValidationError('手机号码格式不正确')#抛出异常
else:
return value class ArticleForm(forms.Form):
#字段名称要和提交的字段相同
title = forms.CharField(required=True,#是否必填
validators=[test_phone],#自定义校验,公共校验,验证手机,邮箱
strip=False,#是否去掉输入的空格,默认为True
error_messages={#错误信息提示
'required':'必填参数未填',
'max_length':'最大10个字符',
'min_length':'最小5个字符'
}) # 字段名称要和提交的字段相同
# title = forms.CharField(required=True, # 是否必填
# max_length=10, # 最大字符长度
# min_length=5, # 最小字符长度
# strip=False, # 是否去掉输入的空格,默认为True
# error_messages={ # 错误信息提示
# 'required': '必填参数未填',
# 'max_length': '最大10个字符',
# 'min_length': '最小5个字符'
# }) #form 中的钩子函数
#第三步对全局进行验证
def clean(self):
print('clean',1)
# 通过 self.cleaned_data获取所有的数据
return self.cleaned_data #针对个别字段进行验证
#第二步对个别数据进行验证
def clean_title(self):
print('clean_title',2)
#验证手机号是否是我们系统的
return self.cleaned_data.get('title')
def clean_content(self):
pass

views.py中的代码块

from user.forms import ArticleForm,StudentForm
def add_article(request):
if request.method == 'GET':
return render(request,'post.html')
else:
article_obj = ArticleForm(request.POST)
f = article_obj.is_valid()#获取校验结果
if f:
cleaned_data = article_obj.cleaned_data#校验通过后,结果会存在cleaned_data中,是个dict
print(cleaned_data)
else:
print(article_obj.errors)
return HttpResponseRedirect(article_obj.errors)

2、modelform

#  model + form
def test_name(value):
if value == 'dsx':
raise ValidationError('姓名不存在。')
else:
return value class StudentForm(forms.ModelForm):
# 当你觉得model写的验证规则不符合你的要求,可以像forms.Form 一样进行验证
name = forms.CharField(validators=[test_name]) class Meta:
model = models.Student # 创建类变量和model建立映射关系
# fields = '__all__' # 验证全部字段
# fields = ['name'] # 显示指定列验证 只有指定的验证的字段才会出现在cleaned_data中
exclude = ['age'] # 排除了就不会出现在cleaned_data中 def clean(self):
if self.cleaned_data.get('name') == 'ssz':
raise ValidationError('姓名是射手座')
else:
return self.cleaned_data # 单个字段验证,必须要争在form中有些这个 字段
def clean_name(self):
if self.cleaned_data.get('name') == 'nhy':
raise ValidationError('姓名是nhy')
else:
return self.cleaned_data.get('name')

views.py中的代码块

def student(request):
if request.method == 'GET':
return render(request,'student.html')
else:
studentObj = StudentForm(request.POST)
f = studentObj.is_valid()
if f:
print('cleaned_data',studentObj.cleaned_data)
else:
print('errormsg',studentObj.errors)
return HttpResponse('ok')

Django基础011-form&modelform的更多相关文章

  1. django基础 -- 10.form , ModelForm ,modelformset

    一.生成页面可用的 HTML标签 1.form 所有内置字段 Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label ...

  2. Django基础之form组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  3. Django基础之Form表单验证

    Form表单验证 1.创建Form类(本质就是正则表达式的集合) from django.forms import Form from django.forms import fields from ...

  4. Django基础之form表单

    1. form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时, 我们在好多场景下都需要对用户的输入做校验, 比如 ...

  5. Django基础之Form和ModelForm组件

    https://www.cnblogs.com/clschao/articles/10486468.html 1.创建django项目 2.创建py文件 3.导入form from django im ...

  6. Django基础之form操作

    Form表单的功能 自动生成HTML表单元素 检查表单数据的合法性 如果验证错误,重新显示表单(数据不会重置) 数据类型转换(字符类型的数据转换成相应的Python类型) Form相关的对象包括 Wi ...

  7. Django基础之form表单的补充进阶

    1. 应用Bootstrap样式 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  8. 3 django系列之Form表单在前端web界面渲染与入库保存

    author: 温柔易淡(Leo),欢迎技术交流与拍砖 preface 我们在前端写表单的时候,其实可以使用django自带的forms功能来实现,特别是在处理 修改已经存在数据 的场景特别好用,下面 ...

  9. django基础窗口类的使用

    django基础窗口form表单的运用 具体效果图如下: 首先确定表单中的数据集,先自己创建一个forms.py或者在原来的models.py中添加: 1代码如下 class ContactForm( ...

  10. {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm

    Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...

随机推荐

  1. 通过Maven打jar包&运行

    运行命令:java -jar [包名] https://www.cnblogs.com/jinjiyese153/p/9374015.html

  2. X-Deep Learning功能模块

    X-Deep Learning功能模块 特征体系 样本 特征 网络 数据准备 样本格式 使用DataReader读取数据 自定义python reader 定义模型 稀疏部分 稠密部分 优化器 训练模 ...

  3. CUDA运行时 Runtime(三)

    CUDA运行时 Runtime(三) 一.异步并发执行 CUDA将以下操作公开为可以彼此并发操作的独立任务: 主机计算: 设备计算: 从主机到设备的内存传输: 从设备到主机的存储器传输: 在给定设备的 ...

  4. Recommenders with TensorRT

    Recommenders with TensorRT 推荐系统用于向社交网络.媒体内容消费和电子商务平台的用户提供产品或媒体推荐.基于MLP的神经协作滤波器(NCF)推荐器使用一组完全连接或矩阵乘法层 ...

  5. Imec推出高性能芯片的低成本冷却解决方案

    Imec推出高性能芯片的低成本冷却解决方案 Imec unveils low-cost cooling solution for high-performance chips 3D打印冷却器优于传统解 ...

  6. 一文教会你认识Vuex状态机

    摘要:简单来说,Vuex就是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享. 本文分享自华为云社区<Vuex状态机快速了解与应用>,原文作者:北极光之夜. 一. ...

  7. JS设置GridView中的RadioButton只能选中一个

    //JS&JQuery $(document).ready(function () { //点击跳转链接返回浏览器历史的上一个页面 $("#btnBack").click( ...

  8. 三色标记法与读写屏障, G1工作过程

    https://www.jianshu.com/p/12544c0ad5c1 https://www.cnblogs.com/GrimMjx/p/12234564.html 自我总结和记忆: 为了解决 ...

  9. 自动发布.NET Core Web应用

    1 原因和目的 相信很多开发者都需要将自己的编写的应用进行编译并部署到服务器上,这个过程在个人或小型团队的项目中都是一个简单的事情.但是对于并行化开发而言,就需要通过工具来辅助这个过程.于是,我参考了 ...

  10. Centos7 安装 Zabbix Server 4.0

    官方参考URL:https://www.zabbix.com/documentation/4.0/start 1. 安装 Apache 2.4(略) 注意系统时间/时区ntp server是否定时同步 ...