深入学习Django源码基础14 - Django中forms简要分析

Django集成OpenAI ChatCompletion的工程化实践 ChatCompletion API是大模型对话服务的核心协议标准,其本质是基于RESTful设计的JSON-RPC式语义接口;理解其请求结构(messages数组、role约束、stream机制)与响应规范(SSE格式、finish_reason语义),是构建稳定AI服务的前提。技术价值在于实现Django Web框架与异步AI能力的安全适配——涵盖连接池复用、DRF异常兼容、API Key动态管理及流式响应桥接。典型应用场景包括电商智能客服、SaaS工单自动回复、教育平台答疑机器人等需嵌入式AI交互的生 阅读详情

本篇采用分析源码学习的方式。

首先说一下forms模块文件夹结构

forms
|----extras
     |----__init__.py
     |----widgets.py
|----__init__.py
|----fields.py
|----forms.py
|----formsets.py
|----models.py
|----util.py
|----widgets.py

分析widgets.py中有Media类

分析其中主要完成2件事情

1:js和css路径设置

2:js和css路径渲染

渲染部分
def render(self):
        return mark_safe('\n'.join(chain(*[getattr(self, 'render_' + name)() for name in MEDIA_TYPES])))

    def render_js(self):
        return [format_html('<script type="text/javascript" src="{0}"></script>', self.absolute_path(path)) for path in self._js]

    def render_css(self):
        # To keep rendering order consistent, we can't just iterate over items().
        # We need to sort the keys, and iterate over the sorted list.
        media = sorted(self._css.keys())
        return chain(*[
                [format_html('<link href="{0}" type="text/css" media="{1}" rel="stylesheet" />', self.absolute_path(path), medium)
                    for path in self._css[medium]]
                for medium in media])

接下来定义部件类

部件基类(包含,渲染,label提示,取值),封装常见的form控件类。主要是显示部分。


接下来看fields.py

fields类封装了对应的部件与程序员交互部分的方法。(验证,更多显示操控。初始化,本地化等操作)

并基于部件,做了1些深层的字段封装(邮件字段,邮箱字段,时间,日期,正则。)。

主要目的用于将orm的字段对应到前端。对应到部件。


接下来看forms.py

有了部件和field的封装以后。

1个form中有多个fields如何处理。显示。

 

接下来看formsets.py文件,进入更牛B的批量生产工厂

def formset_factory(form, formset=BaseFormSet, extra=1, can_order=False,
                    can_delete=False, max_num=None):
    if max_num is None:
        max_num = DEFAULT_MAX_NUM
    absolute_max = max(DEFAULT_MAX_NUM, max_num)
    attrs = {'form': form, 'extra': extra,
             'can_order': can_order, 'can_delete': can_delete,
             'max_num': max_num, 'absolute_max': absolute_max}
    return type(form.__name__ + str('FormSet'), (formset,), attrs)

新建1个formFormSet的类。基类是BaseFromSet。属性有 form,extra。。。

在初始化内部调用


def _construct_forms(self):
        self.forms = []
        for i in xrange(min(self.total_form_count(), self.absolute_max)):
            self.forms.append(self._construct_form(i))

根据数量构造form

下面是抽象出来的模拟理解过程的代码

def with_metaclass(meta, base=object):
    return meta("NewBase", (base,), {})

def get_declared_fields(base, attrs):
    print base, attrs

class DeclarativeFieldsMetaclass(type):
    def __new__(cls, name, bases, attrs):
        attrs['base_fields'] = get_declared_fields(bases, attrs)
        new_class = super(DeclarativeFieldsMetaclass, cls).__new__(cls, name, bases, attrs)
        return new_class

class BaseForm(object):
    def __init__(self):
        pass

class Form(with_metaclass(DeclarativeFieldsMetaclass, BaseForm)):
    pass

class BaseFormSet(object):
    def __init__(self):
        pass

def formset_factory(form, formset=BaseFormSet, extra = 1):
    attrs = {'form':form, 'extra':extra}
    return type(form.__name__ + str("FormSet"), (formset,), attrs)

class subForm(Form):
    def __init__(self):
        print 'subForm'

formsets = formset_factory(subForm)
print formsets
print formsets.__dict__

接下来看models.py文件

Helper functions for creating Form classes from Django models and database field objects.

 models.py中封装了类似formset的方法。与其他方法(下次看文档时候在具体分析)

关于其中的用法 

http://my.oschina.net/xorochi/blog/125802

http://i.appspot.com/blog/2009/jan/11/django-dynamic-modelform/

官方使用方法

https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#modelforms-factory


util.py中定义没什么好说的


从电影《被解救的姜戈》看Django框架的“解放者”哲学与Web开发实践 在Web开发领域,框架的核心价值在于提升开发效率与降低复杂度。Django作为Python生态中著名的全栈Web框架,其设计哲学深刻体现了“约定优于配置”与“DRY(Don't Repeat Yourself)”原则。通过提供ORM(对象关系映射)、自动化Admin后台、内置认证系统等“开箱即用”的组件,Django将开发者从繁琐的底层HTTP处理、数据库连接与安全配置中解放出来,使其能专注于业务逻辑创新。这种“解放生产力”的理念,与电影《被解救的姜戈》中主角从被束缚到掌握技能、实现目标的叙事内核形成巧妙隐 阅读详情

相关推荐

Ubuntu 18.04 部署 Django 4.2 的兼容性实践与生产加固

Django 是 Python 生态中成熟稳定的全栈 Web 框架,其部署依赖底层操作系统、Python 解释器、SSL 库及包管理工具的协同兼容。Ubuntu 18.04 作为长期支持(LTS)发行版,虽已停止官方更新,但仍广泛用于教学、嵌入式及遗留系统,其预装的 Python 3.6.9、OpenSSL 1.1.1 和老旧 pip 版本构成典型的跨生命周期兼容性挑战。解决关键在于规避系统级依赖冲突,采用 Miniconda3 等沙盒化环境统一管理 Python、Django、psycopg2 和 Red

conghuang7343的博客 463

Django——forms组件

forms组件:通过后端在Django中定义forms类,可以在 html 中动态的生成一个表单;检验用户提交的数据。在应用中创建一个名为 :forms 的py文件。forms 组件提供的组件设置。在模板中渲染自定义表单类。forms 组件验证数据。

几许的博客 1109

Ubuntu 18.04 部署 Django 4.2 的稳定环境构建方法论

Django 是 Python 生态中最主流的 Web 开发框架,其生产部署需兼顾版本兼容性、依赖隔离与系统安全性。在已进入 EOL 状态的 Ubuntu 18.04 上,系统自带的 Python 3.6.9 与老旧软件源无法满足 Django 4.2+(要求 Python ≥ 3.8)的运行基础,直接 apt 安装将导致安全漏洞(如 CVE-2023-24580)、依赖污染及系统工具崩溃等高危问题。因此,现代工程实践强调采用 pyenv 管理多版本 Python、virtualenv 实现项目级依赖隔离、

dichengyan0013的博客 636

Django-11:Forms组件

在2.2章节中,实现了错误信息提示,但是却是英文的,给用户的体验不好,所以我们需要自定义提示信息。对于继承forms.Form类(如案例中的TestForm)的属性,添加class TestForm(forms . Form) : username = forms . CharField(min_length = 3 , max_length = 8 , label = '用户名' , error_messages = {

liuyu_719的博客 857

Django单元测试实战:从模型验证到视图全流程覆盖

Django单元测试是保障Web应用稳定性的核心工程实践,其本质是通过TestCase模拟数据库事务隔离、Client复现真实HTTP请求链路、并结合PostgreSQL等生产级数据库验证外键与约束行为。它不仅检验Model字段的max_length、unique、validator等数据契约,更覆盖视图层的权限控制、分页逻辑、重定向流程及异常分支(如IntegrityError、ValidationError)。在电商、SaaS等业务场景中,单元测试能提前暴露ORM隐式行为(如级联删除失效)、第三方集成脆

weixin_34396103的博客 651

django1.6.5 form/formset/inline formset

django 动态表格的基础(py段)。本文是翻译并整理后的文档,基于django1.6.5,希望对后来者有帮助。

Django forms组件

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

weixin_48183870的博客 1417

【超详细】基于YOLOv8的PCB缺陷检测

印刷电路板(PCB)瑕疵数据集:是一个公共的合成PCB数据集,由北京大学发布,其中包含1386张图像以及6种缺陷(缺失孔,鼠标咬伤,开路,短路,杂散,伪铜),用于检测,分类和配准任务。本文我们选取了其中适用与检测任务的693张图像,随机选择593张图像作为训练集,100张图像作为验证集。

weixin_45679938的博客 2万+

【12.0】Django框架之form组件

【一】需求 写一个注册功能 获取用户名和密码,利用form表单提交数据 在后端判断用户名和密码是否符合一定的条件 用户名中不能包含啦啦啦 密码不能少于三位 如果符合条件需要你将提示信息展示到前端页面 【二】form表单实现 【1.0】点击提交按钮返回比对信息 前端页面 <form action="" method="post"> <p>user...

Chimengmeng的博客 281

​​瑞芯微RK系列 vs 全志系列芯片:终极选型指南(2025版)​

​。

jinxi996611的博客 1万+

logisim计组实验八 乘法器

原理:点这里 有问题欢迎留言哦~ 文章目录五位阵列乘法器电路图时间延迟分析六位补码阵列乘法器五位无符号乘法流水线原理图电路图原码一位乘法器原理图电路图补码一位乘法器 五位阵列乘法器 电路图 此处注意:全加器FA的cout端是进位端而非输出端 使用硬件控制比循环累加的速度快得多。 但是存在串行进位链 改进版: 时间延迟分析 T是计算相加数的一级门延迟 3n–>2n 性能差别在1.5倍 ...

treblez's blog 2万+

django-forms组件

08.19自我总结 django-forms组件 一.forms的作用 前端和后端都要校验 前端校验的目的:减少后台代码连接数据库的压力 用forms可以同时完成前端和后端同时校验且减少代码量 二.forms的基本使用: 1.定义数据的时候导入from类 2.字段通过fields进行导入 3.演示 views.py from django.forms import Form fro...

aiyulove201314的博客 195

Android Studio中把llama.cpp编译Android .so

本文介绍了一个在Android Studio中集成llama.cpp的最小Demo实现方案,通过JNI将llama.cpp编译为Android.so库,实现本地加载GGUF模型进行文本生成。文章详细说明了项目结构配置(SDK≥30,NDK≥28)、CMake编译设置、Kotlin-JNI-C++的完整调用链实现,以及模型文件部署方式。该Demo采用每次请求新建上下文的简化设计,包含加载模型、生成文本、资源释放等核心功能,并提供了错误排查建议。项目舍弃了上下文保持等复杂功能以确保稳定性,适合作为端侧大语言模型

Zhang Phil 514

从源码到项目:Django/SpringBoot学生图书管理系统实战解析

在软件开发领域,源码分析是理解系统架构和业务逻辑的核心技能。通过解析项目配置文件、数据模型和路由机制,开发者能够掌握从环境搭建到业务实现的完整流程。以学生图书管理系统为例,这一过程不仅涉及Django或SpringBoot框架的应用,更涵盖了数据库设计、API接口开发和系统部署等关键技术环节。源码的价值在于提供一个可迭代的样本,帮助学习者跨越从‘能运行’到‘能理解’的认知鸿沟,最终实现从项目复用到自主创新的能力提升。

weixin_30896511的博客 290

FPGA实战:手把手教你实现VESA DSC编码(附Verilog代码解析)

本文详细介绍了如何使用FPGA实现VESA DSC编码器,包括核心架构设计、Verilog代码实现与优化技巧。通过流水线设计、色彩空间转换和预测编码等关键技术,帮助开发者掌握工业级DSC编码器的开发流程,并提供实用的调试与性能优化方法。

weixin_29165725的博客 403

【YOLOv11改进 - 特征融合】SDI:多层次特征融合模块,替换contact操作

【YOLOv11改进 - 特征融合】SDI:多层次特征融合模块,替换contact操作

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1768

Django框架整理

Django是一个功能强大的web框架。 前言:框架模式简介 1、MVC和MTV框架模式:分层级进行管理 说到框架模式我们有必要简单的说下设计模式,了解下设计模式这个概念,因为有人对设计模式和框架模式的概念经常混淆 设计模式: 是一套被反复使用,多数人知道并经过分类的代码设计经验总结,是为了解决一些通用性问题的 目的:重用代码并保证代码的可靠性 设计模式分类:单例,抽象工厂 等等 23种模式 一句话总结:解

有用的话关个注,点个赞,收个藏🫶。 1713

【1.2】Costas环的基本原理概述

Costas环是一种用于载波恢复的相干解调技术,可直接从BPSK等抑制载波信号中恢复本地载波并完成解调。其核心结构包含同相/正交双支路处理,通过混频、低通滤波后,利用I/Q支路信号乘积进行相位误差检测,经环路滤波器调节VCO输出频率,实现载波同步。课程将重点讲解Costas环的MATLAB仿真实现、系统性能分析及FPGA开发,包括信号产生、频偏模拟、滤波器设计等模块,并通过AWGN信道和不同频偏条件下的测试验证系统性能。该技术无需单独提取载波,在数字通信系统中具有重要应用价值。

fpga/matlab/simulink算法仿真工程 450

django2.2安装xadmin报错:(ImportError : cannot import name ‘DEFAULT_FORMATS‘)

尝试着用唯物的角度去理解:瞬间就是永恒。

Y57657的博客 761

Centos7系统添加中文支持(附中文语言包)

这里以centos7.6为例,在安装系统是没有选择中文,之后如果需要添加中文支持。在命令行执行后,会提示启动图形模式失败,转为启动文本模式。文本模式其实和图形模式差不多,操作需要用键盘而不是鼠标。在弹窗后,通过上下键选择Chinese(P.R of China) - 中文(简体):然后,按Tab键选择Yes,点击回车。rebootlocale可以看到系统语言已经变成了zh_CN.utf-8:之后,服务器上的中文名称就可以正常显示正常了。

悦分享 682

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

multilingual-MiniLMv2-L12-mnli-xnli模型文件全解剖:config.json、分词器与safetensors加载详解

本文带你完整解剖 **multilingual-MiniLMv2-L12-mnli-xnli** 多语言自然语言推理(NLI)模型的全部文件:从 `config.json` 关键参数、分词器(tokenizer)的 BPE 词表,到 `model.safetensors` 的加载原理,帮助新手一次性看懂这个支持 100+ 语言、可用于零样本分类的多语言模型仓库,并快速上手调用。 ## 🧭 模型

gitblog_00385的博客 817

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Plone迁移到Django+Wagtail实战指南

内容管理系统(CMS)迁移是企业数字化升级的关键技术动作,其核心在于平衡稳定性、可维护性与开发效率。Plone作为老牌Python CMS,以ZODB和深度权限模型见长,但面临前端断代、定制成本高、生态封闭等现实瓶颈;而Django提供成熟安全的全栈基座,Wagtail则以StreamField、页面树结构和现代化编辑体验重构内容生产流。二者组合不仅实现架构解耦,更支撑多端发布、语义检索、SSO集成等现代需求。本文聚焦真实政务、教育、文旅类项目,详解ZODB到PostgreSQL的数据无损迁移、树形权限到策

weixin_30617797的博客 307

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

深度学习工具包 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 表单

有时候我们需要在前台用 get 或 post 方法提交一些数据,所以自己写一个网页,用到 html 表单的知识。 第一节:源码下载 zqxt_form_learn1.zip 比如写一个计算 a和 b 之和的简单应用,网页上这么写 1 2 3 4 5 6 7 8 9 10 11 12 13

snrnjhna的博客 597

Python编程从入门到实践:项目驱动学习路径与实战指南

Python作为一门广泛应用于数据分析、Web开发和自动化脚本的编程语言,其学习路径的设计直接影响学习效率。传统的语法大全式教学常导致理论与项目实践脱节,而项目驱动学习通过构建完整应用,将核心语法、数据结构与框架使用有机结合,有效解决了这一痛点。这种模式不仅帮助学习者掌握列表、字典、函数和类等基础概念,更能通过Django、Matplotlib等工具链完成数据可视化、Web应用等真实场景开发,实现从知识到工程能力的转化。对于希望系统掌握Python并快速应用于实际开发的初学者和转行者而言,明确的学习里程碑和

weixin_34408717的博客 371

Plone可行性衰减分析:从企业级CMS到现代技术选型决策

内容管理系统(CMS)是数字基建的核心组件,其选型直接关系到开发效率、运维成本与业务响应速度。Plone作为基于Zope和ZODB的对象型CMS,曾以严谨的权限模型与内容安全机制著称,但其架构复杂性、Zope生态依赖及ZODB性能瓶颈,正导致实际项目中的人力成本激增与升级风险放大。随着Django和Wagtail等基于Python生态、遵循约定优于配置原则的框架普及,CMS技术价值重心已从‘功能完备性’转向‘交付可行性’——即能否在可控周期内完成开发、稳定运维并快速迭代。本文结合真实迁移案例与量化指标,解析

aoanping0730的博客 320

(课程设计)基于Python的在线问卷调查系统-计算机毕设 附源码 04694

注册用户功能模块: 注册登录:普通用户通过简单的注册与登录步骤进入平台,创建个人账户。用户可以使用邮箱、手机号等进行身份验证,以便访问平台的完整功能。 首页:用户点击可查看旅行网站首页信息,包括问卷填写、网站公告、最新资讯和留言反馈等功能的详细信息。 网站公告:用户点击可查看网站公告、关于我们、联系方式和网站介绍等信息。 最新资讯:用户点击可查看资讯信息,同时可对资讯文章进行点赞、收藏和评论。 问卷填写:用户可通过搜索进行查看各类问卷调查信息,同时可进行答题操作。 留言反馈:用户点击可进入页面并点击“发布留

ID3461074420的博客 2532
上一篇: 深入学习Django源码基础13 - Django中的中间件(middleware)
下一篇: 深入学习Django源码基础15 - views简要分析学习
watsy
博客等级 码龄19年 133粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值