首页 > 编程语言 >Django Form钩子方法源码分析

Django Form钩子方法源码分析

时间:2023-08-13 17:56:59浏览次数:43  
标签:Form mobile self Django field 源码 报错 clean data

1. 用法

 

在Form类中定义名称为 clean_ + form字段名称 的方法

校验成功 返回 self.clean_data["字段名"]

校验失败 会raise 报错

 

2. 源码分析

先从is_valid 方法开始分析

 当self._is_bound = True, self.errors 为False时 校验成功

1. self._is_bound

 当django项目启动时data是空的,也就是在get方法时实例化form类

 当执行POST方法时传入request.POST

 这里data就等于request.POST

self._is_bound = data = request.POST传递的信息

2. self.error

 data 刚传递进来还没有执行校验self_error = None

会执行self.full_clean方法

 2.1 self._clean_field()

 self[name]在form源码分析2中有提及,

self[name]  = form["mobile"] 拿到default_template生成的input标签

 

!! 下面的clean_field方法是关键

 第一次for循环, 拿到 name = mobile, bf = self['mobile']

field = bf.field = self['mobile'].field = mobile对应的charfield

value = 15304274820

下面走到了try, except 

try:

 except:

如果有任何报错都会执行add_error方法,

将报错存入

如果try里有报错

执行add_error方法

 

标签:Form,mobile,self,Django,field,源码,报错,clean,data
From: https://www.cnblogs.com/khalil12138/p/17626740.html

相关文章

  • Netty源码学习1——NioEventLoopGroup的初始化
    系列文章目录和关于我零丶引入netty源码学习中,大家maybe都接触到如下的helloworld——netty客户端启动的demo:映入眼帘的第一个类就是NioEventLoopGroup,很多文章上来就是是Netty中的核心类,啥Channel,Pipeline,Context,Boostrap一通劈里啪啦,我看起来比较费劲。so本文不会上来就给......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录7
    Django实现文件上传、文件列表查看、修改、限流和日志记录7不管调用的接口在内网,还是外网都需要做好限制保证接口的访问和限流降级处理,本章节新增限流功能。限流功能主要针对两个方面:IP和用户针对IP限流文件列表接口进行限流处理,限制每分钟每个IP访问10次,你可以使用Dja......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录6
    Django实现文件上传、文件列表查看、修改、限流和日志记录6对于已经上传的文件,现在已经实现了文件的查看修改,美中不足的是:需要查看每个文件需要提前记住文件名指定文件名进行查看和修改。为此,新增一个上传文件的列表功能,在通过模版按钮跳转路由到查看和修改页面。实现逻辑查看......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录4
    Django实现文件上传、文件列表查看、修改、限流和日志记录4本章添加用户认证功能,属于安全模块。用户认证在Django中,默认情况下,用户的用户名和密码是存储在数据库中的。Django提供了内置的用户模型(User模型),它可以管理用户的认证和授权。配置数据库在file_upload/settings.py......
  • 【Java】智慧工地管理平台源码
    智慧工地是聚焦工程施工现场,紧紧围绕人、机、料、法、环等关键要素,综合运用物联网、云计算、大数据、移动计算和智能设备等软硬件信息技术,与施工生产过程相融合。一、什么是智慧工地智慧工地是指利用移动互联、物联网、智能算法、地理信息系统、大数据挖掘分析等信息技术,提高项目......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录2
    Django实现文件上传、文件列表查看、修改、限流和日志记录2本章节优化新增功能使用ssh秘钥连接远程服务器进行文件上传使用ssh私钥连接远程服务器上传文件使用SSH私钥连接远程服务器并上传文件,你可以使用paramiko库来实现SSH连接和文件传输的功能。首先,确保你已经生成了SSH......
  • 本地启动 ABAP Platform Trial 的 Docker 命令行程序
    Docker是一个开源的容器化平台,用于轻松地构建、发布和运行应用程序。DockerDesktop是适用于Windows和Mac的Docker桌面应用程序,它允许用户在本地运行和管理容器化应用程序。在本文中,我们将详细介绍以下两个命令行并解释每个参数的含义:dockerpullsapse/abap-platform-trial:190......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录1
    Django实现文件上传、文件列表查看、修改、限流和日志记录1上一章已经实现了文件的上传到项目的指定目录中,这章我们继续乘胜追击继续优化实现。一般都是上传文件到后端服务器上,因此需要建立一个远程服务器的连接,本章连接远程服务器实现文件上传实现点击上传本地文件到远程服务......
  • 支持本地部署,完全免费的 ABAP 来了 - ABAP Platform Trial 1909 发布
    我曾经编写过一套零基础的ABAP编程学习教程,截至2023年8月2日,总共包含114篇文章:零基础快速学习ABAP有零基础自学ABAP的朋友咨询,如果手头没有ABAP开发环境该怎么办?我在2019年时写过一篇文章,提到了SAP云平台上免费的ABAP编程环境:ABAP开发者上云的时候到了-......
  • Java| jdk的src源码目录讲解
    JavaJDK的源代码目录(src)包含了Java核心类库的源代码,它提供了Java编程语言的基本功能和类。src目录结构通常按照包的层次结构组织,每个包对应一个文件夹,而每个类则在相应的包文件夹中以.java文件的形式存在。目录结构-com--sun-java--applet--awt--beans--io--lang--mat......