Django——form组件的局部钩子
如果对字段的校验条件太少,不能满足我们的需求,那么,我们可以对每个字段自定义校验的内容,就可以使用局部钩子。
局部钩子的使用方法:
(1)导入错误类型 ————> 我们自己定义的钩子抛出的错误也会被保存到校验失败的错误信息errors中去
from django.core.exceptions import ValidationError
ValidationError是用来抛出异常时的错误类型
(2)然后在forms类中创建一个clean_字段名的方法
def clean_字段名(self):
(3)通过cleaned_data获取校验成功的值(对这个字段检验完成后会立即执行它的局部钩子,然后才会继续校验下一个字段)
self.cleaned_data.get("字段名")
(4)例子
from django.contrib import admin
from django.urls import path
from app01.views import index urlpatterns = [
path('admin/', admin.site.urls),
path('index/',index)
]
from django.shortcuts import render,HttpResponse
from django import forms
from django.core.exceptions import ValidationError #校验错误 class UserInfo(forms.Form):
username = forms.CharField(
label='用户名',
required=True,
) password = forms.CharField(
label='密码',
widget=forms.widgets.PasswordInput(render_value=True)
) #定义一个username字段的局部钩子,不能包含 “666”
def clean_username(self):
value = self.cleaned_data.get('username') #获取检验成功后的uesrname的值
if '666' in value: #如果包含了 666
raise ValidationError('不能包含666') #抛出错误
else:
return value #如果不包含 666,则返回 username 的值,这里必须返回这个值 def index(request):
if request.method == 'POST':
obj = UserInfo(request.POST)
if obj.is_valid():
return HttpResponse('通过')
else:
return HttpResponse('不通过') obj = UserInfo()
return render(request,'index.html',{'obj': obj})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<form action="" method="post">
{{ obj.as_p }}
<input type="submit">
</form>
</body>
</html>
Django——form组件的局部钩子的更多相关文章
- Django学习笔记之form组件的局部钩子和全局钩子
本文通过注册页面的form组件,查看其中使用的全局钩子和局部钩子. # Create your views here. class RegForm(forms.Form): username = fo ...
- Django框架(十四)-- forms组件、局部钩子、全局钩子
一.什么是forms组件 forms组件就是一个类,可以检测前端传来的数据,是否合法. 例如,前端传来的邮箱数据,判断邮件格式对不对,用户名中不能以什么开头,等等 二.forms组件的使用 1.使用语 ...
- Django框架(十五)—— forms组件、局部钩子、全局钩子
目录 forms组件.局部钩子.全局钩子 一.什么是forms组件 二.forms组件的使用 1.使用语法 2.组件的参数 3.注意点 三.渲染模板 四.渲染错误信息 五.局部钩子 1.什么是局部钩子 ...
- 9.24 Django Form组件
2018-9-23 20:10:04 这两天优化了自己图书管理系统 github 连接:https://github.com/TrueNewBee/pythonDemo 顺便整理了博客,写了好多总结, ...
- django form组件 cookies,session
django form组件 渲染标签 就是组件里面的字段在前端展示叫做渲染标签 校验数据 用户输入的数据提交给后端组件叫做校验数据 forms组件中定义的字段都是必须传值的(required=Tr ...
- django Form组件
django Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建 ...
- Django—Form组件
Django From简介 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比 ...
- 6月28日 Django form组件 和 modelform组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- django——form组件
1.html表单概述 Django开发的是动态Web服务,而非单纯提供静态页面.动态服务的本质在于和用户进行互动,接收用户的输入,根据输入的不同,返回不同的内容给用户.返回数据是我们服务器后端做的,而 ...
- Django form组件 与 cookie/session
目录 一.form组件 二.cookie.session 返回Django 组件 一.form组件 1.1 以注册功能为例 注册功能 1.渲染前端标签获取用户输入 --> 渲染标签 2.获取用户 ...
随机推荐
- Godot.NET C#IOC重构(2):TileMap 详解
目录 前言 TileMap添加 TileMap绘制 TileMap 连续图块 修改纹理原点 统一设置 自动地形 匹配规则 修改匹配概率 修改概率前 修改概率后 随机图块 Scattering 不连续间 ...
- ubuntu 20.04.1 安装 PHP+Nginx
ubuntu 20.04.1 安装 PHP+Nginx 更新源 sudo apt-get update 安装环境包 sudo apt-get -y install nginx sudo apt-get ...
- Pytorch-tensor的创建,索引,切片
1.基本概念 标量:就是一个数,是0维的,只有大小,没有方向 向量:是1*n的一列数,是1维的,有大小,也有方向 张量:是n*n的一堆数,是2维的,n个向量合并而成 2.a.size(),a.shap ...
- 实训篇-JavaScript-打地鼠
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- WPF开发随笔收录-操作注册表
一.前言 在windows平台软件开发过程中,注册表的操作是经常会遇到的一个场景.今天记录一下在操作注册表时遇到的一些坑: 二.正文 1.操作注册表,于是直接从网上找了一段代码来用 /// <s ...
- Web前端 -- 利用Babel来将ES6转化为ES5代码
一.简介 Babel用来将ES6代码转为ES5代码. 二.安装 安装命令行转码工具 Babel提供babel-cli工具,用于命令行转码.它的安装命令如下: npm install --global ...
- unity 3d导出安卓包时报错:A failure occurred while executing com.android.build.gradle.internal.tasks.workers$actionfacade see the console for details
unity 3d导出安卓包时报错:A failure occurred while executing com.android.build.gradle.internal.tasks.workers$ ...
- 剑指offer21(Java)-调整数组顺序使奇数位于偶数前面(简单)
题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分. 示例: 输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[ ...
- 如何使用 Serverless Devs 部署静态网站到函数计算(上)
简介:部署个静态网站到函数计算~ 前言 公司经常有一些网站需要发布上线,对比了几款不同的产品后,决定使用阿里云的函数计算(FC)来托管构建出来的静态网站. FC 弹性实例自带的500 Mb 存储空 ...
- 函数计算GB镜像秒级启动:下一代软硬件架构协同优化揭秘
简介: 优化镜像加速冷启动大致分为两种做法:降低绝对延迟和降低冷启动概率.自容器镜像上线以来我们已经通过镜像加速技术,分阶段降低了绝对延迟.本文在此基础上,介绍借助函数计算下一代IaaS底座神龙裸金属 ...