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.rhkb.cn/news/288725.html

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

相关文章

Tuxera for Mac2024免费读写硬盘U盘工具

作为软件产品专家,我对各类软件都有较为深入的了解,下面介绍Tuxera for Mac这款读写硬盘/U盘工具的相关信息: Tuxera for Mac是一款高效稳定的NTFS读写工具,专为解决Mac系统无法直接读写NTFS格式驱动器的问题而设计。它提供了完整…

Android 自定义EditText

文章目录 Android 自定义EditText概述源码可清空内容的EditText可显示密码的EditText 使用源码下载 Android 自定义EditText 概述 定义一款可清空内容的 ClearEditText 和可显示密码的 PasswordEditText,支持修改提示图标和大小、背景图片等。 源码 基类&#xf…

实现商铺和缓存与数据库双写一致

2.4 实现商铺和缓存与数据库双写一致 核心思路如下: 修改ShopController中的业务逻辑,满足下面的需求: 根据id查询店铺时,如果缓存未命中,则查询数据库,将数据库结果写入缓存,并设置超时时间…

ssm小区车库停车系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 ssm小区车库停车系统是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模…

如何在家中使用手机平板电脑 公司iStoreOS软路由实现远程桌面

文章目录 简介一、配置远程桌面公网地址二、家中使用永久固定地址 访问公司电脑**具体操作方法是:** 简介 软路由是PC的硬件加上路由系统来实现路由器的功能,也可以说是使用软件达成路由功能的路由器。 使用软路由控制局域网内计算机的好处&#xff1a…

HCIA-Datacom实验_03_实验一:华为VRP系统基本操作

1.运行eNSP,设置-界面设置-自定义界面-设备标签,“总显示接口标签” 打钩。 2.按照实验拓扑添加设备 注:如果是真实环境,需要接两条线: (1)串口线:电脑USB口到网络设备Console口&am…

Windows下载使用nc(netcat)命令

‘nc’ 不是内部或外部命令,也不是可运行的程序? 点击链接地址,下载压缩包。 完成后解压 使用方式(三种): 1、直接双击exe使用 2、把这个exe放到cmd启动的默认路径下 放到默认路径下,使用nc&a…

MySQL高级语句(二)

一、前期准备工作 1.1 登陆mysql,查看数据表 1.2 显示所有表 1.3 创建guigui表并插入数据 1.4 创建ky35表格并插入数据 二、子连接 子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语句。子查询语句是先于主查询语句被执行的…

自动生成测试位置吸附脚本设计思路

前言 计算一个异质结需要测试对比不同吸附位置之间的能量差异,可以直接手动建模,但是人太懒了,能交给机器的自己就别动手 问题描述 如图上所示是我计算吸附用的衬底,当原子在上面吸附时我考虑了25个(可以随便取&…

Tensorflow2.0笔记 - 使用compile,fit,evaluate,predict简化流程

本笔记主要用compile, fit, evalutate和predict来简化整体代码,使用这些高层API可以减少很多重复代码。具体内容请自行百度,本笔记基于FashionMnist的训练笔记,原始笔记如下: Tensorflow2.0笔记 - FashionMnist数据集训练-CSDN博…

OSPF-区域间路由计算

一、概述 前面学习了我们学习了Router-LSA和Network-LSA,它们都只能在区域内进行泛洪,而且我们之前一直主要是单区域学习。OSPF的核心是骨干区域Area 0,其它都为非骨干区域。但是在大型网络中,单区域OSPF会存在一定的问题&#xf…

[BT]BUUCTF刷题第9天(3.27)

第9天(共2题) [护网杯 2018]easy_tornado 打开网站就是三个txt文件 /flag.txt flag in /fllllllllllllag/welcome.txt render/hints.txt md5(cookie_secretmd5(filename))当点进flag.txt时,url变为 http://b9e52e06-e591-46ad-953e-7e8c5f…

gopher伪协议

基础知识 基本格式 基本格式&#xff1a;URL:gopher://<host>:<port>/<gopher-path>web也需要加端口号80gophert协议默认端口为70gopheri请求不转发第一个字符 get请求 问号&#xff08;&#xff1f;)需要转码为URL编码&#xff0c;也就是%3f回车换行要变…

【Linux】信号的处理{信号处理的时机/了解寄存器/内核态与用户态/信号操作函数}

文章目录 0.对于信号捕捉的理解1.信号处理的时机1.1 何时处理信号&#xff1f;1.2 内核态和用户态1.3 内核态和用户态的切换 2.了解寄存器3.信号捕捉的原理4.信号操作函数4.1sighandler_t signal(int signum, sighandler_t handler);4.2int sigaction(int signum, const struct…

IP如何异地共享文件?

【天联】 组网由于操作简单、跨平台应用、无网络要求、独创的安全加速方案等原因&#xff0c;被几十万用户广泛应用&#xff0c;解决了各行业客户的远程连接需求。采用穿透技术&#xff0c;简单易用&#xff0c;不需要在硬件设备中端口映射即可实现远程访问。 异地共享文件 在…

基于SpringBoot和Vue的校园管理系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的校园管理系统的设计与实现 &#xff01;&#xff01;&#xff01; 有需要的小伙伴可以通过文章末尾名片咨询我哦&#xff01;&#xff01;&#xff01; &#x1f495;&#x1f495;作者&#xff1a;李同学 &#x1f495;&#x1f…

vscode上编辑vba

安装xvba插件更换vscode的工作目录启动扩展服务器在config.json中添加目标工作簿的名称加载excel文件&#xff08;必须带宏的xlsm&#xff09;这个扩展就会自动提取出Excel文件中的代码Export VBA&#xff08;编辑完成的VBA代码保存到 Excel文件 &#xff09;再打开excel文件可…

【LVGL-键盘部件,实体按键控制】

LVGL-二维码库 ■ LVGL-键盘部件■ 示例一&#xff1a;键盘弹窗提示■ 示例二&#xff1a;设置键盘模式■ 综合示例&#xff1a; ■ LVGL-实体按键控制■ 简介 ■ LVGL-键盘部件 ■ 示例一&#xff1a;键盘弹窗提示 lv_keyboard_set_popovers(kb,true);■ 示例二&#xff1a;设…

基于Givens旋转完成QR分解进而求解实矩阵的逆矩阵

基于Givens旋转完成QR分解进而求解实矩阵的逆矩阵 目录 前言 一、Givens旋转简介 二、Givens旋转解释 三、Givens旋转进行QR分解 四、Givens旋转进行QR分解数值计算例子 五、求逆矩阵 六、MATLAB仿真 七、参考资料 总结 前言 在进行QR分解时&#xff0c;HouseHolder变换…

开源AI引擎|企业合同管理:自然语言处理与OCR技术深度融合

一、企业应用&#xff1a;合同智能管理 结合NLP和OCR技术&#xff0c;企业可以构建智能化的合同管理系统&#xff0c;实现合同的自动化审查、风险评估和知识抽取。这样的系统不仅能够提高合同处理的效率&#xff0c;还能够降低人为错误&#xff0c;加强风险控制。 例如&#x…