Django开发复盘

一、URL

        对于一个不会写正则表达式的蒟蒻来说,在urls.py中就只能傻傻的写死名字,但是即便这样,还会有很多相对路径和绝对路径的问题(相对ip+端口的路径),因为我们网页中涉及到页面跳转,涉及到发送请求的url,这些地方都很容易导致视图无法正确响应对应路由而报错。

        试了很久开发出了一个最蠢的办法,就是无论在哪个模版中,按我这种写法就一定能访问到对应的路由,按照前后各补一个‘/’的规则,在每个APP中的urls.py里,也给每个路由写成带斜杠和不带斜杠两种(因为大概率有其他地方会忘记前后都补斜杠,我也没去搞清楚这里的路由规则,总之不想自己在这里吃亏的话就把两种都写上)

        这种模版和这种urls的写法,包能访问到的,不存在路由接收不到的情况,而且保证一定按绝对路径访问(就是路由分发的时候,所有前缀都要补上:主路由分发到了user和work两个app下,那么在user里的路由假定为user_child,user所接收的前缀为user的路由的话,那么我们写就应该写 '/user/user_child/')


二、不同APP之间models的访问

        因为Django中导包的特点,同一个app下的包必须用相对路径导(同一目录就是from . import sorfware1,上一级目录就是 from ..** import software1),但是导其他app下的models.py,则直接用 from app_name.models import yourmodel1,yourmodel2 ....

就不再用相对路径导了,尽管pycharm可能识别不到,但启动django项目不会报错,且能正常调用到另一app的模型类的相关数据


三、数据解析

        前端传的数据只要不是序列化后的数据,都是直接用request.GET或者request.POST取,如果用Jquery的办法将一个form表单里所有的输入进行序列化打包发送post请求的话,后端要从request.body取到序列化后的字符串,并进行解码,转字典,如果是一对一的数据还要进一步转字符串


四、对web的调试

        我对项目中web页面的调试往往都在有大量js代码的页面,因为可能出现某些特性被废除,元素加载先后未保障,请求相关的库资源失败,相关静态资源没有加载出来的问题。这里建议养成打开F12调试面板的习惯,每次请求都看看是不是都返回200OK,以及点进去看具体加载的文件内容是不是和自己修改后的一致。

        有可能是浏览器缓存的原因,有可能是项目修改还未重新部署,后端代码改了是能显而易见发现的,因为终端会提示,但模版中的代码或者静态文件修改了终端不会提示(一个小办法就是观察pycharm里相关语句是否变色。但不是所有前端语句都能被pycharm识别到,我调试的时候一般写很多console.log,这个是会变色的,如果没变色就去刷新页面你会发现加载出的代码里也不会有你更改的内容)

        对于掺杂Jquery,ajax这种的页面,一定一定要注意某些操作要在页面元素全部加载完成之后才能做,有的函数绑定了相关id的标签,但其实这个标签还没有渲染到页面上,那就根本取不到这个DOM,也就根本不能正确执行后面的操作


 五、开发注意事项

        如果做的分工是前后端分离,后端一定要事先弄清楚哪个页面有哪些功能,要考虑哪些参数值要从请求中取,哪些要保存到session里,弄清功能以后要保证项目进度,绝对不能等前端把所有web发过来再开始写代码,因为web发过来与后端代码进行嵌套也是不小的工作量,单纯的后端处理逻辑的代码,自己想调试的话就自己写一点form表单,input,p标签,button啥的意思一下数据的传递就行了。

        你无法想象到前端的最终页面在项目中能否很好的展示,有的效果可能只在本地上正常,挂到服务器上就不对劲,这时候将后端代码嵌套进去要给前端反复的反馈问题,以及调整页面样式。。(其实这里有很多是我嵌套代码的时候,可能不小心漏掉了一些双标签的闭合部分,导致一些父子标签的关系混乱了),还有可能是后端处理模版的时候进行循环渲染,然后为了结合相应的js代码,导致更改了一些标签的id,这也会导致样式出岔子。尽量写样式的时候让前端控制在class里,而不是通过id,虽然也只会有少数这种情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/572412.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习复习手册

机器学习的要素 基本概念 泛化: The ability to predict accurately the target for new examples that differ from those used in the training set is known as generalization.监督学习:The training data comprises examples of the input variab…

python在运行时控制台以表格形式输出结果prettytable.PrettyTable()

使用prettytable库按表格的形式美化输出结果 效果如图: 表格中可接收列表格式的数据,列表中装字符串 # 引入模块 import prettytable as pt# 创建表格与表头,包含五列,分别为train-epoch,class,precisio…

【进程控制】超详细讲解wait和waitpid的原理(结合代码)

文章目录 前言waitpid函数参数option什么叫非阻塞等待?参数status wait 函数 前言 在了解了进程状态这一概念之后,我们明白了什么叫做僵尸进程:子进程退出,父进程“不管不顾”。而一旦存在僵尸进程,势必也会存在内存泄…

SpringBoot整合Redis:面试必考题-缓存击穿--逻辑过期解决

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏Redis实战与进阶 本专栏讲解Redis从原理到实践 …

如何解决Modbus转Profinet网关通信不稳定或数据丢失问题

接到现场反映,在配置Modbus转Profinet网关时,出现Modbus转Profinet网关(XD-MDPN100)通信不稳定或数据丢失的问题,就这个问题特做出答疑。 解决Modbus转Profinet网关(XD-MDPN100)通信不稳定或数据…

【Java.mysql】——数据删改(DU) 附加数据库约束

目录 🚩更新(Update) 🚩删除(Delete) 🚩数据库约束 🎈约束类型 ✅NULL约束 ✅NNIQUE 唯一约束 ✅DEFAULT:默认值约束 ✅PRIMARY KEY:主键约束 ✅FOREIGN KEY:外键…

python Flask扩展:如何查找高效开发的第三方模块(库/插件)

如何找到扩展以及使用扩展的文档 一、背景二、如何寻找框架的扩展?三、找到想要的扩展四、找到使用扩展的文档五、项目中实战扩展 一、背景 刚入门python的flask的框架,跟着文档学习了一些以后,想着其实在项目开发中,经常会用到发…

jenkins配置源码管理的git地址时,怎么使用不了 credential凭证信息

前提 Jenkins使用docker部署 问题 (在jenlins中设置凭证的方式)在Jenkins的任务重配置Git地址,并且设置了git凭证,但是验证不通过,报错; 无法连接仓库:Command "git ls-remote -h -- http://192.1XX.0.98:X02/…

设计模式之建造者模式精讲

也叫生成器模式。将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 在建造者模式中,有如下4个角色: 抽象建造者(Builder):用于规范产品的各个组成部分,并进行抽象&…

Redis安装详细教程

Redis安装详细教程 文章目录 Redis安装详细教程前言一、windows下安装Redis1、下载地址2、启动redis服务3、连接redis 二、Linux下安装Redis:直接安装1、下载并安装 三、Linux下安装Redis:Docker中安装 前言 一、windows下安装Redis 1、下载地址 官方下…

腾讯云4核8G服务器多少钱一年?谁知道?

2024年腾讯云4核8G服务器租用优惠价格:轻量应用服务器4核8G12M带宽646元15个月,CVM云服务器S5实例优惠价格1437.24元买一年送3个月,腾讯云4核8G服务器活动页面 txybk.com/go/txy 活动链接打开如下图: 腾讯云4核8G服务器优惠价格 轻…

《深入Linux内核架构》第3章 内存管理(4)

目录 3.4 初始化内存管理 3.4.1 建立数据结构 3.4.2 特定于体系架构的设置 内核在内存中的布局 初始化步骤 分页机制的初始化 3.4.3 启动期间的内存管理 数据结构 初始化 与内核的接口 停用bootmem分配器 释放初始化数据 3.4 初始化内存管理 包括: 显式…