Django基础011-form&modelform
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的更多相关文章
- django基础 -- 10.form , ModelForm ,modelformset
一.生成页面可用的 HTML标签 1.form 所有内置字段 Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label ...
- Django基础之form组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- Django基础之Form表单验证
Form表单验证 1.创建Form类(本质就是正则表达式的集合) from django.forms import Form from django.forms import fields from ...
- Django基础之form表单
1. form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时, 我们在好多场景下都需要对用户的输入做校验, 比如 ...
- Django基础之Form和ModelForm组件
https://www.cnblogs.com/clschao/articles/10486468.html 1.创建django项目 2.创建py文件 3.导入form from django im ...
- Django基础之form操作
Form表单的功能 自动生成HTML表单元素 检查表单数据的合法性 如果验证错误,重新显示表单(数据不会重置) 数据类型转换(字符类型的数据转换成相应的Python类型) Form相关的对象包括 Wi ...
- Django基础之form表单的补充进阶
1. 应用Bootstrap样式 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- 3 django系列之Form表单在前端web界面渲染与入库保存
author: 温柔易淡(Leo),欢迎技术交流与拍砖 preface 我们在前端写表单的时候,其实可以使用django自带的forms功能来实现,特别是在处理 修改已经存在数据 的场景特别好用,下面 ...
- django基础窗口类的使用
django基础窗口form表单的运用 具体效果图如下: 首先确定表单中的数据集,先自己创建一个forms.py或者在原来的models.py中添加: 1代码如下 class ContactForm( ...
- {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm
Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...
随机推荐
- Python爬取微信小程序(Charles)
Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...
- Jittor 的Op, Var算子
Jittor 的Op, Var算子 要使用jittor训练模型,需要了解两个主要概念: Var:Jittor的基本数据类型 Operations:Jittor的算子与numpy类似 首先,开始使用Va ...
- AIoT 2020 年分析
AIoT 2020 年分析 2020年,从智能手机到智能手表,从智能摄像头到智能汽车,随着AI.芯片.云计算.通信等基础技术的逐渐成熟,又一个行业来到了历史性的时刻--AIoT. 从"万物互 ...
- 软件工具将GPU代码迁移到fpga以用于AI应用
软件工具将GPU代码迁移到fpga以用于AI应用 Software tools migrate GPU code to FPGAs for AI applications 人工智能软件初创公司Mips ...
- 『言善信』Fiddler工具 — 11、Fiddler中Composer功能详解
目录 1.Composer功能介绍 2.Composer界面说明 3.使用方式 (1)自定义Request请求 (2)Composer重复发送请求 (3)Composer篡改请求数据 1.Compos ...
- 【NX二次开发】Block UI 选择对象
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- 【VBA】查找字符串
老婆饼里有老婆吗 Sub test() aaa = "老婆饼里有老婆吗" If InStr(aaa, "老婆") <> 0 Then Debug.p ...
- klayout安装及使用教程
klayout 版本:klayout-0.26.9 我的系统环境:Deepin20(可以视为Debian) 修改过的代码地址:https://github.com/stuartofmine/klayo ...
- Scala语言笔记 - 第三篇(容器方法篇)
Scala语言笔记 - 第三篇(容器方法篇) 目录 Scala语言笔记 - 第三篇(容器方法篇) map和flapMap方法: 最近研究了下scala语言,这个语言最强大的就是它强大的函数式编程( ...
- python 字典和列表嵌套用法
python中字典和列表的使用,在数据处理中应该是最常用的,这两个熟练后基本可以应付大部分场景了.不过网上的基础教程只告诉你列表.字典是什么,如何使用,很少做组合说明. 刚好工作中采集promethe ...