位置: 编程技术 - 正文

在Django同1个页面中的多表单处理详解(一个页面)

编辑:rootadmin

推荐整理分享在Django同1个页面中的多表单处理详解(一个页面),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:一个页面,django多个页面,django一个页面多个表单,django一个页面多个表单,在同一个页面中,如果希望页面,一个页面可以使用多个page指令吗,一个页面可以使用多个page指令吗,django多个页面,内容如对您有帮助,希望把文章链接给更多的朋友!

快速上手Django实现项目

近期公司在做1个海淘的项目,APP为pylot。由于时间比较赶,加上隔壁那哥们不在,只能自己挑大梁了。结果,当项目做出来之后,被领导狠狠的批了一顿,说怎么用django写,你能解决Django的内存问题吗,你能解决并发的问题吗&#;Django那么重。

然后我只好回答说,正是因为它重,所以人家拿来写大型项目。虽然这里不是为了上面这2个问题的,而是来说下如何快速开发原型的问题。

对于Django这样基于模型的Web框架,实话说真的解决了很多繁琐的工作。由于它1个模型对应1张表,因此只要很短暂的时间就把原型给弄完了。实际上,我用Django主要是不用被页面浪费我的时间,这样我就可以专心写API那方面了。

结果,公司这个项目除了自己可以看到外,还要实现1个B端的需求,而我此时的后台功能已经完成了,这可以如何是好。而区别在于只能让注册的用户只能看到属于它自己的订单,而其他不变。

于是上官方文档看了下表单的教程,看到1个ModelForm的玩意,通过它可以将后台的表单直接渲染出来,而后在ModelForm类中通过instance关键字可以将对应模型直接渲染出来,这样花了1个星期的时间就把API、B端和公司的后台完成了,效率还算比较高。

下面说下如何通过Django快速实现项目:

实际上分解问题很关键,把问题按等级划分有助于加快开发速度 把不怎么会写的代码先跳过,使用繁琐的方式先写上去,后面再用其内建的方式来替换 不要紧张,一定要保持淡定,不然你会发现你完全写不出代码 不要看官方文档,因为写的??掠帜颜业街氐?/li> 带着问题在网上搜索答案,如果某个方式不行就换种思路去做,比如要实现1个多对多的关系的HTML组件,直接找第3方插件而不是看文档实现

相信如何能做到以上几点,才能把django的效率发挥出来。下面来看看本文的详细介绍吧。

Django同1个页面中的多表单处理

关于在同1个页面多个表单提交的问题,实际上是项目中遇到的1个小问题。关于这个问题,主要有2个需要解决的问题:

多个表单的渲染问题 多个表单提交时外键的处理问题

下面我们分别进行说明。

当时在建模的时候使用了类似如下的方式:

在这里,1个仓库的数据主要由3个表组成,分别为它的一些基础信息,可以配送的范围、天数及其他一些附加信息组成。然后其页面如下所示:

多表单渲染

在Django同1个页面中的多表单处理详解(一个页面)

而公司的需求就是我们要在商户端上让客户在创建仓库时填写上述的内容,由于我比较懒,而公司给出的时间也不是很充裕,于是直接使用ModelForm来实现,而不需要一一的创建表单了。换句话说,我们要将多个模型表在同1个页面中渲染出来,对于这样的问题,主要有4种解决的方案:

在1个form组件中使用多个模型表单类 使用django提供的modelform_factory来解决 使用第3方插件django-betterforms或django-multipleformwizard这样的插件 使用元类,然后继承BaseForm进行表单的重写。

这里我们使用第1种解决方案来实现多个表单渲染的问题。

这里我们在forms模块下新建3个模型表单类:

然后在视图中引入这3个表单:

默认情况下,我们先将对应的表单渲染出来先。在这里我们往模板中输出了多个变量,然后在模板中手动进行如下的处理:

在这里,我们在1个表单中输出多个表单,其页面如下所示:

可以看到其效果与后台的页面相差不是很大,只是没有对应的样式而已。

多表单提交外键处理

接着我们需要处理多个表单提交时的处理问题。

在这里我们直接对这3个表单进行保存,结果出现了这样1个错误。

由于我们使用了1个外键进行了约束,而使用上述的方式会导致数据表中的s_name_id的字段数值为NULL,从而导致了错误。而上述的方式时直接就提交给数据库了,导致后面的外键无法被满足。

为了解决这个问题,我们采用延迟提交给数据库的方式:

在这里,我们先让第1张表先不提交,将其保存为1个变量form中。而第2个张表也先不提交,我们将其实例的s_name修改为之前的第1张表返回的结果,然后再进行保存。这样我们就实现了多张表的依赖导致的问题了。最后我们使用重定向的方式将成功添加后的页面跳转到该商户的仓库列表中。

其跳转后的页面如下所示:

这样我们就解决了在1个页面提交多个表单的问题。实际关于Django在1个页面提交多个表单的问题,实际上问题不是很多,只要解决了渲染和提交时处理的问题,实际这个问题就迎刃而解了。重要的是如何拆分问题和解决问题的思路。

总结

标签: 一个页面

本文链接地址:https://www.jiuchutong.com/biancheng/380020.html 转载请保留说明!

上一篇:Python heapq使用详解及实例代码

下一篇:Python下的Softmax回归函数的实现方法(推荐)(Python下的慢)

  • 等线补交以前年度附加税会计分录是?
  • 偷逃税款是什么
  • 机器设备一般折旧几年
  • 付钱给对方会计分录
  • 报销流程如何操作视频
  • 印花税不用计提会计第几号准则
  • 电子税务局怎么登录
  • 私立医院申报程序
  • 社保申报后不能缴费
  • 个体户核定5万每个月要交多少税钱
  • 甲供材能否开具增值税专用发票
  • 转增股本是不是缴个人所得税
  • 存货非正常损失的纳税筹划
  • 绿化支出如何做会计处理?
  • 职工工资保险费账务处理怎么做?
  • 收就业局稳岗补贴做账
  • 承兑汇票兑现怎么填写
  • 应付利息与应付利息区别
  • 奖金部分
  • 工资不在本公司发票报销可以吗?
  • 酒店会计账务处理及税务申报
  • 混合销售举例说明
  • 融资租入的固定资产视为承租企业的资产体现了什么原则
  • 汇算清缴之前找回来成本发票可以吗
  • 进项税留抵需要转出吗
  • 1697508923
  • php过滤数组中的空字符串
  • php创建表单
  • 企业所得税费用扣除比例
  • igfxsrve.exe
  • rteng7.exe - rteng7是什么进程 有什么用
  • giantantispywaremain.exe是什么进程 有什么作用 giantantispywaremain进程查询
  • 产生永久性差异时为什么计税基础等于账面价值
  • 上传图片照片
  • laravel框架用到哪些设计模式
  • php常用的魔术方法有哪些
  • 浅析是什么意思
  • 投标文件中财务报表包括哪些内容
  • 孕妇钙片什么时候吃最好吸收? 已解决
  • 最详细、最完整的相机标定讲解
  • 为什么我们认为北京人已经学会使用火
  • php编写登陆界面
  • php命令大全
  • MySQL分表和分区最佳攻略
  • python如何运用
  • 应收账款和应付账款属于什么科目
  • 小规模纳税人1%税率优惠政策
  • 工程结算是含有增值税吗
  • 企业注销未抵扣完进项税怎么处理
  • 出口货物退运已补税(未退税)证明
  • 汇算清缴期间发放的工资
  • 土地使用权的摊销计入在建工程
  • 未完工属于什么科目
  • 临时账户名称是什么意思
  • 待结算财政款项是什么科目
  • 关于低值易耗品的评估说法正确的有()
  • 特别提款权和普通提款权的区别
  • 会计什么情况下不用继续教育
  • 账户的基本结构不包括的内容有
  • win10 64位开机卡在登录界面的解决办法
  • 简单易上手 固态硬盘SSD安装WIN7系统的3种办法
  • win10怎么自定义壁纸
  • cmd命令怎么运行
  • 怎么改电脑windows7
  • 安装yum的命令
  • 保存 linux
  • ubuntu安装指南
  • cocos2dx官方教程
  • unity脚本模板
  • Unity3D游戏开发毕业论文
  • linux那么多命令怎么记
  • css优化提高性能的方法有哪些
  • python等于和双等于
  • nodejs sleep方法
  • python获取entry里输入的值
  • 湖南增值税普通发票查询系统官网
  • 河南税务报到
  • 税法 农产品增值税题目及答案
  • 网上预约挂号能退吗
  • 我的世界服务器怎么创建
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设