Django自学笔记 6-4 forms进阶操作——重写forms方法

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet 计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet,在计算机视觉领域,卷积神经网络(Convolutional Neural Network,CNN)已然成为推动众多任务发展的核心力量。从早期简单的图像识别,到如今复杂的目标检测、语义分割、图像生成等任务,CNN 都展现出了卓越的性能。CNN 的发展历程见证了一系列经典模型的诞生,其中 LeNet 作为开山之作,为 CNN 的发展奠定了基础,而 ResNet 则通过创新性的设计,突破了传统神经网络的限制,使得网络能够构建得更深、性能更优。 阅读详情

————总目录——前言——框架版本————

======================= 大爽歌作,made by big shuang =======================

四 forms进阶操作,重写forms方法

1 - 重写clean方法

在本章第三节中,我们举了个注册学生账号的例子,里面我们使用模型来建立表单。
一般来讲,注册账号的页面,都需要用户填写两次密码进行确认。

那么我们这里需要对第三节中的代码进行一个拓展。
首先是要新增一个确认密码的字段,这个很简单,在StuRegisterForm中添加这样一行即可:

confirm_password = forms.CharField(widget=forms.PasswordInput(), label="确认密码")

那么接下来还需要什么呢?
还需要进行验证,验证两个字段内容是否一致。
这代表我们需要重写下这个表单类的验证方法。

表单的验证是一个比较复杂的过程,分很多步骤,每一个步骤负责一部分验证工作。
具体的详细步骤,可以查阅参考文献进行拓展:Form and field validation

这里我们只介绍下需要用到的:
表单子类的clean()方法,该方法可以执行需要访问多个表单字段的验证。
重写后的StuRegisterForm如下

class StuRegisterForm(forms.ModelForm):
    confirm_password = forms.CharField(widget=forms.PasswordInput(), label="确认密码")

    class Meta:
        model = Student
        fields = ('grade',
                  'name',
                  'password',
                  'confirm_password',
                  'gender',
                  'birthday',
                  'email',
                  'info')

    def clean(self):
        cleaned_data = super(StuRegisterForm, self).clean()
        password = cleaned_data.get('password')
        confirm_password = cleaned_data.get('confirm_password')
        if confirm_password != password:
            self.add_error('confirm_password', 'Password does not match.')

        return cleaned_data

这里我们详细的看一下重写后的clean方法。
这里只是添加一个验证的规则而已,原有的验证工作也是需要做的。
所以该方法第一行先调用父类的clean方法进行原有的基础验证,
然后从cleaned_data中分别取password和confirm_password这两个字段的值,进行比较。
如果比较发现这两个值不一致,此时需要报错。
这里有两种报错方式:

  • 抛出ValidationError异常:raise forms.ValidationError("Password does not match.")
  • 使用add_error方法添加异常:self.add_error('confirm_password', 'Password does not match.')

这里推荐使用第二种,上面的例子中也用的这一种。使用该方式可以展示多个报错,而不是只能展示第一个报错。

YOLOv13添加DRB模块map暴涨12.33!准确率提升8.56!召回率提升15.66 本文介绍了在YOLOv13模型中添加DRB模块的改进方法。实验结果显示,添加DRB模块后模型性能显著提升,mAP暴涨12.33%,准确率提升8.56%。文章详细说明了移植过程,包括创建yolov13-DRB.yaml配置文件、修改tasks.py和__init__.py文件,以及引入UniRepLKNet模块的具体实现。其中重点描述了GRNwithNHWC、NCHWtoNHWC等核心组件的实现细节,并提供了完整的模型结构配置代码。这些改进使得YOLOv13模型在保持原有架构优势的同时,获得了更强大的特征提取 阅读详情

相关推荐

Windows Server 2012 R2虚拟机安装全攻略:从镜像选择到网络配置一步到位

本文提供Windows Server 2012 R2虚拟机安装全攻略,涵盖从镜像选择到网络配置的完整流程。详细讲解在Oracle VM VirtualBox中的安装步骤、TCP/IP网络设置、系统优化及常见问题解决方案,帮助用户快速搭建可立即投入使用的服务器环境。特别适合IT初学者和系统管理员学习传统服务器应用的部署与配置。

weixin_28363123的博客 538

FormGroup表单重新设置其中的一个字段值

this.myForm = this.fb.group({ emName: ['张珊'], emSex: ['女'], emNumber: ['F0123'] }); //把emNumber修改成F0124 this.myForm.patchValue({emNumber: 'F.124'});

榴莲不好吃的专栏 1万+

基于STM32F103标准库与DMA的实时音频FFT频谱显示系统设计

本文详细介绍了基于STM32F103芯片与DMA技术实现实时音频FFT频谱显示系统的设计方法。通过标准库驱动和FFT算法处理音频信号,结合OLED显示屏实时绘制音乐频谱,涵盖硬件选型、核心原理、开发环境搭建及性能优化等关键步骤,为数字信号处理应用提供实用参考。

yellow的专栏 777

Django—Form表单-重写验证(注册案例)

forms.py from django import forms from django.core.exceptions import ValidationError from django.forms.utils import ErrorList class RegisterForm(forms.Form): def __init__(self, data=None, ...

piduocheng0577的博客 710

Windows下Anaconda换清华镜像源最全指南(含常见问题解决)

本文提供了一份详尽的Windows系统下Anaconda配置清华镜像源的完整指南。针对网络下载缓慢的痛点,文章详细对比了命令行添加与直接编辑配置文件两种主流方法,并重点解决了配置过程中常见的文件缺失、安装失败、环境求解缓慢等疑难问题,帮助用户一劳永逸地提升包管理效率。

brandy的博客 337

不用Root也能抓包?Android高版本HTTPS抓包的3种替代方案(含Charles技巧)

本文针对Android高版本HTTPS抓包难题,提供了三种无需Root权限的实战解决方案:利用VirtualXposed等虚拟沙盒环境、配置Postern等系统级代理工具,以及通过修改应用源码或网络安全配置。文章还详细解析了Charles抓包工具在非Root环境下的高级配置与排错技巧,帮助开发者在遵守安全规范的前提下,有效进行网络调试与监控。

http9protocoller的博客 647

django中form的自定义校验

最近要给学校的邮件写个注册模块,好让已经毕业的学生继续使用学校的邮箱。 在写表单验证的时候出现个问题,django中form并没有提供学号类型的field(好吧,我承认哪个框架都不会提供的),但是我还地用总不能向以前那样在处理数据时做数据校验吧,于是就翻手册,找到三个解决方法,一个是自定义field,一个是使用validators,一个是重写form中和校验相关的方法。我选择了第二种,其实三种方

AncerHaides的专栏 7083

MATLABGUI读取文件并将路径显示在文本框中

MATLABGUI读取文件并将路径显示在文本框中

m0_50305149的博客 2650

Django之form重写save()方法

class UserInfo(models.Model): username = models.CharField("用户名", max_length=64, unique=True) password = models.CharField("密码", max_length=64) uid = models.CharField(verbose_name='个人唯一ID', m

Quincy.Coder的博客 5683

第二次 PX4仿真环境搭建过程全记录

参考链接 https://blog.youkuaiyun.com/yanwumuxi/article/details/80097294 https://www.ncnynl.com/archives/201709/2013.html 一、安装依赖项 我们使用Debian / Ubuntu LTS 作为Linux的标准支持版本,但是也支持Cent OS 和 Arch Linux的发行版本。 权限设置 警告:永远...

移步换景的博客 2262

补洞与fairing算法

对网格进行补洞,remesh, 平滑,fairing, 最小二乘优化平滑

闪电彬彬的博客 1047

Django重写admin的modelform校验器

原文在我的博客:https://www.liboer.top/articles/detail/Django-AdminForm/ Django重写admin的modelform校验器 背景 在我的博客中,文章表有标题、简介、内容等字段。 一般情况下发文章时,我不想写文章的简介(太懒了,麻烦)。这时候就想到能不能直接截取我内容的前200个字符作为简介呢?答案是肯定的! 猜想 首先,我猜想:即使是admin他也肯定是封装好了校验功能的。就比如我们自己做校验时,自己写一个model的class,自己在写一个mod

李波的blog,一名喜欢编程和分享技术的研究僧~ 783

水很深的深度学习(四): 卷积神经网络CNN

深度学习-CNN,卷积神经网络的概念 上世纪60年代,Hubel等人通过对猫视觉皮层细胞的研究,提出了感受野这个概念,到80年代,Fukushima在感受野概念的基础之上提出了神经认知机的概念,可以看作是卷积神经网络的第一个实现网络,神经认知机将一个视觉模式分解成许多子模式(特征),然后进入分层递阶式相连的特征平面进行处理

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 3624

Django实战:如何使用django-crispy-forms美化Bootstrap 4表单

这是一个快速教程,可帮助您开始使用django-crispy-forms, 并且永不回头。Django-crispy-forms是一个很棒的第三方包,可让您控制渲染Django表单的方式...

大江狗 5877

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

django-forms-builder动态字段默认值:使用Django模板代码提升表单灵活性

django-forms-builder是一个强大的Django应用,它允许用户在Django管理界面中轻松构建自定义表单。通过动态字段默认值功能,你可以使用Django模板代码为表单字段设置灵活的默认值,从而提升表单的适应性和用户体验。 ## 为什么需要动态字段默认值? 在创建表单时,固定的默认值往往无法满足所有场景需求。例如: - 需要根据当前日期自动填充日期字段 - 需要根据登录用户信息

gitblog_00352的博客 735

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

django forms表单

目录: forms表单介绍 FORMS介绍 在许多应用场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.。 form组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 FORMS的简单使用 ...

番茄炒蛋君的博客 945

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Django CMS Forms 项目教程

Django CMS Forms 项目教程 1. 项目介绍 djangocms-forms 是一个用于 Django CMS 的表单构建器插件。它允许用户通过简单的拖放界面快速创建表单,而无需编写任何代码。该项目提供了丰富的字段类型,支持 HTML5 属性,并且可以轻松集成 reCAPTCHA 以防止垃圾邮件。 2. 项目快速启动 安装 首先,使用 pip 安装 djangocms-forms: ...

gitblog_00958的博客 1164

Django Crispy Forms 动态布局操作指南

Django Crispy Forms 是一个强大的 Django 表单渲染工具,它提供了灵活的方式来控制表单的 HTML 布局和样式。其中,动态布局功能允许开发者在运行时修改表单布局,这为构建复杂的、交互式的表单界面提供了极大的便利。 ## 动态布局基础概念 动态布局的核心思想是:表单的布局结构不是静态不变的,而是可以在程序运行过程中被修改和调整。这种能力特别适用于需要根据用户输入或其他条件...

gitblog_01040的博客 374

Django之forms组件

一.Django的forms组件应用场景 1.应用 一般应用于前端的登入、注册界面, 对用户输入的字段进行校验, 快速的判断用户输入的内容是否合法, 并返回信息 2.为何不在前端直接使用JS进行校验 前端的校验可以没有, 但后端的校验必须要有 因为前端的校验弱不禁风, 有很多种方式可以伪装成浏览器发送请求传递数据 或者通过爬虫程序绕过前端页面直接朝后端提交数据 二.forms组件的基本使用(步骤) 导入forms组件 定义一个类, 并继承Form 在类中书写要校验的字段, 字段的属性就是要校验的规

Shawn派大星 1517

django-forms-builder常见问题解答:新手必知的10个实用技巧

django-forms-builder是一个让用户能够在Django管理界面中轻松构建表单的强大工具。它提供了直观的界面和灵活的配置选项,帮助开发者快速创建各种表单,无需编写大量代码。本文将解答新手使用django-forms-builder时的常见问题,并分享10个实用技巧,让你轻松掌握这个工具的使用方法。 ## 1. 如何快速安装django-forms-builder? 安装djang

gitblog_01181的博客 1098

【2014-08-21】Django自学笔记:forms

Django自学笔记,介绍Django中处理HTML表单的方法,包括HttpRequest对象的request.GET/POST属性访问、表单数据验证、CSRF防护配置以及处理GET和POST请求的视图函数编写。

cstriker1407的专栏 94

Django——forms组件

文章目录django——forms组件forms组件使用forms组件常用参数钩子函数全局钩子(针对多个字段)局部钩子(针对单个字段)forms补充知识点cookie与session操作cookiesession django——forms组件 forms组件 应用场景:网页注册页面,获取用户输入的用户名和密码,判断用户名和密码中不能包含规定的字段和字符(比如:黄,赌,毒),如果有,不给予页面跳转...

Allen 731

django之forms组件和cookie与session操作

目录 django之forms组件和cookie与session操作 forms组件 forms主要功能 普通方式手写注册功能 views.py login.html forms组件 先定义一个类和导入: ...

weixin_45967126的博客 1146

使用指南:Django Bootstrap Modal Forms

使用指南:Django Bootstrap Modal Forms 项目介绍 Django Bootstrap Modal Forms 是一个旨在简化 Django 中模态框内 AJAX 驱动表单创建过程的插件。它允许开发者以优雅的方式在 Bootstrap 的模态对话框中展示并处理表单,通过 AJAX 提交数据,无需页面刷新,提供更好的用户体验。 该插件支持 Bootstrap 4 和 Boot...

gitblog_01120的博客 1008

Django forms组件

validators自定义一个手机号码检查验证器import reraise ValidationError("手机号格式错误")error_messages={"required": "手机号不能为空"}# 另一个方式RegexValidator(r"^[0-9]+$", "只能输入数字"),RegexValidator(r"^123[0-9]+$", "只接受123开头的电话")钩子函数就是一种在特定事件或者条件发生时,被调用的函数提供了一种创建交互性和动态性行为的方法。

weixin_48183870的博客 1418

Django之Forms组件

1、forms组件的使用 #1、导入forms模块 from django import forms #2、创建forms类,继承forms.Form class Forms(forms.Form): username=forms.CharField(min_length=3,max_length=8,label='用户名'}) password=forms.Ch...

NQ31 1065
上一篇: Django自学笔记 6-3 使用模型(models)创建表单(form)
下一篇: python爬虫 常用套路(requests+BeautifulSoup)
大爽歌
博客等级 码龄9年 422粉丝 92原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值