在周末的一个早上,小白还在做着美梦,就收到了小美的连环追魂call,电话一直响个不停。

  小白打着哈欠拿起电话:早上好美女。

  小美:出事了出事了,我们公司网站一早访问是一片空白,什么内容都没有了,你赶急上去看看是怎么回事。

  小白一听到马上紧张了起来,赶紧说:好的,我先看看,一会回电话给你。

  小白说完赶紧打开电脑,登录网站查看,发现网站内容不见了,然后登录后台查看,发现后台产品记录都不见了,公司简介和联系我们也是空白的......

  小白赶紧打通小美电话,和她沟通了起来:这是什么时候发现的?你们网站最近有没有更新过?有多少人知道管理员账号和密码??

  小美:是早上一早发现的,我们老板早上起来打开网站时发现一片空白,就打电话给我了,打了你一早电话也没接听。网站上线后,一直都没怎么更新内容。知道网站管理员密码的有好几个人,不过有一个人前段时间离职了,不知是否有关。另外,密码一直是123456没有改过。

  小白:嗯嗯,这肯定是有人搞破坏造成的,不知是那个离职人员还是外面的人黑了进来造成的。还好数据库我做了备份,一会我恢复一下,接下来我会重新设计一下后台管理系统权限,完善权限管理,免得大家担心受怕的。

  小美:好的,尽快弄好,搞好后马上告诉我。

  ......

  小白忙碌了一个早上,终于恢复了网站的正常运行。

  下午小白将老菜约了出来,并将早上发生的事情详细的讲了讲,寻求老菜的帮助。

  小白:老大,事情的经过就是这个样子,上次项目结束时,你说过我的代码存在很多问题,所以我也想趁着这次机会,全部重新设计重构代码,你有什么好的建议,指点一下。

  老菜:经历是最好的成长机会,只有经历过才会重视系统安全,重视代码质量和开发流程。之前你刚做项目,和你提了很多内容,你可能都没太注意,这次是一个很好的契机,利用这个机会重新设计系统并重构代码,完成后你的技术应该就会有一个质的飞跃,当然也会遇到更多的问题,你需要做好挑战的准备。

  首先要确认的是,你是想解决当前这个权限管理问题?还是通过这次机会,将代码全部重构,完善开发框架与系统?因为不同的目标工作量是完全不一样的。前者只需要改造后台管理系统,增加权限管理就可以实现;而后者,有可能所有代码都需要重新编写,工作量也会很大。

  小白想了想:嗯......通过这个项目的开发,让我掌握了很多开发技能,而这些都是很初级的,难得有这个项目可以继续练手,我也希望可以拥有自己的开发框架,这样以后开发起来更能得心应手。

  老菜:好的,如果你没有准备好的话,我会建议你采用循序渐进的方法进行重构,通过多次反复的重构,慢慢完善你的框架与系统,最终得到一个成熟的开发框架,也能深入的掌握相关的技术,这个过程可能会很长。而另一个办法,就是通过我的指导,可以快速进入状态,按我所说的办法与注意事项,一步到位,全方位掌握开发流程与相关技术,整个过程可能会比较难,有些技术也会比较难以理解,可能需要囫囵吞枣式的学习,需要事后自己反复的思考、练习与debug运行,才能慢慢掌握。

  既然你想要系统的学习,那么首先要做的就是规范化,代码做好版本控制管理,接口必须要有接口文档,代码需要封装与重构等等,具体后面我会详细介绍。

  PS:进入新公司几个月来,天天从早忙到晚上12点,几乎没有节假日,4个月一下就过去了,现在仍然还是很忙,但起码可以喘一口气了,年初定下要完成本系列博文第二部分的目标,从本月开始会继续进行,尽量每周抽出一个晚上来写博,争取在年内写完,至于后续部分的内容,以后看缘份吧。

  接下来会花不少章节,再一次介绍开发前要做的一些必要准备,然后再一步步引出ORM、代码分层、权限系统、异常排查、装饰器等内容,具体顺序和内容会根据需要进行适应的调整。

版权声明:本文原创发表于 博客园,作者为 AllEmpty 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

python开发QQ群:669058475(本群已满)、733466321(可以加2群)    作者博客:http://www.cnblogs.com/EmptyFS/

我的第一个python web开发框架(22)——一个安全小事故的更多相关文章

  1. 我的第一个python web开发框架(41)——总结

    我的第一个python web开发框架系列博文从17年6.7月份开始写(存了近十章稿留到9月份才开始发布),到今天结束,一年多时间,想想真不容易啊. 整个过程断断续续,中间有段时间由于工作繁忙停了好长 ...

  2. 我的第一个python web开发框架(14)——后台管理系统登录功能

    接下来正式进入网站的功能开发.要完成后台管理系统登录功能,通过查看登录页面,我们可以了解到,我们需要编写验证码图片获取接口和登录处理接口,然后在登录页面的HTML上编写AJAX. 在进行接口开发之前, ...

  3. 我的第一个python web开发框架(1)——前言

    由于之前经验不是很丰富,写的C#系统太过复杂,所以一直想重写,但学的越多越觉得自己懂的越少,越觉的底气不足.所以一直不敢动手,在内心深处对自己讲,要静下心来认真学习,继续沉淀沉淀.这两年多以来找各种机 ...

  4. 我的第一个python web开发框架(3)——怎么开始?

    小白与小美公司经过几次接触商谈,好不容易将外包签订了下来,准备开始大干一场.不过小白由于没有太多的项目经验,学过python懂得python的基本语法,在公司跟着大家做过简单功能,另外还会一些HTML ...

  5. 我的第一个python web开发框架(32)——定制ORM(八)

    写到这里,基本的ORM功能就完成了,不知大家有没有发现,这个ORM每个方法都是在with中执行的,也就是说每个方法都是一个完整的事务,当它执行完成以后也会将事务提交,那么如果我们想要进行一个复杂的事务 ...

  6. 我的第一个python web开发框架(6)——第一个Hello World

    小白中午听完老菜讲的那些话后一直在思考,可想来想去还是一头雾水,晕晕呼呼的一知半解,到最后还是想不明白,心想:老大讲的太高深了,只能听懂一半半,看来只能先记下来,将明白的先做,不明白的等以后遇到再学. ...

  7. 我的第一个python web开发框架(2)——第一个Hello World

    小白中午听完老菜讲的那些话后一直在思考,可想来想去还是一头雾水,晕晕呼呼的一知半解,到最后还是想不明白,心想:老大讲的太高深了,只能听懂一半半,看来只能先记下来,将明白的先做,不明白的等以后遇到再学. ...

  8. 我的第一个python web开发框架(2)——一个简单的小外包

    第一部分说明 第一部分大概有20来章,主要讲的是一些开发常识.开发前中后期准备内容.开发环境与服务器部署环境安装设置.python基础框架结构与功能等内容,代码会比较简单. 本系列会以故事的方式,向大 ...

  9. 我的第一个python web开发框架(7)——本地部署前端访问服务器

    PS:本系列内容进度节奏会放的很慢,每次知识点都尽量少一点,这样大家接触的知识点少了,会更容易理解,因为少即是多.另外,对于后面代码部分,虽然尽量不用那些复杂的封装和类,但它并不表示看了就能全部记住, ...

随机推荐

  1. 边缘计算 VS 云计算,谁才是未来?

    计算是互联网中一个永恒的话题,设备的所有运行都可以看成是 0 和 1 的运算.在计算中近些年有两个越来越响亮的技术:云计算和边缘计算.现如今是云计算方兴未艾,边缘计算已经有了燎原之势,本文将对这两种技 ...

  2. github学习:如何从本地把项目上传到github&&如何把github项目通过clone复制下来,详细教程

    一.第一步---注册一个Github账号 首先要在GitHub上创建一个帐号,可以去官方网站注册一个账号. 前提:本地安装一个git 本人github:https://github.com/saucx ...

  3. 死磕 java集合之LinkedHashMap源码分析

    欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. 简介 LinkedHashMap内部维护了一个双向链表,能保证元素按插入的顺序访问,也能以访问 ...

  4. PyQt:无边框自定义标题栏及最大化最小化窗体大小调整

    环境 Python3.5.2 PyQt5 陈述 隐藏掉系统的控制栏,实现了自定义的标题控制栏,以及关闭/最大化/最小化的功能,自由调整窗体大小的功能(跟随一个大佬学的),代码内有详细注释 只要把Mai ...

  5. WebApi系列~不支持put和delete请求的解决方法

    回到目录 原因 由于安装了webDAV模块引起的,在web.config里的system.webserver节点,将webdav模块移动 将http请求的权限开放 实现 <system.webS ...

  6. IDEA使用总结

    IDEA常用设置 在我们第一眼看见IDEA是这个样子的: 显示工具条 我们要显示工具条!,两个按钮哦 黑色主体 我们要黑色的主题,白色的太low了! 调整字体大小 现在的字体太小了,我要鼠标滑轮+cr ...

  7. -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器

    集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别?                 A:长度区别                  ...

  8. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project child02

    maven打包成war时,报错: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (d ...

  9. [JavaScript] 后端js的模块化规范CommonJs

    CommonJs概述 主要是单个文件定义的变量,函数,类都是私有的,其他文件不可见,单位的作用域 通过 exports(modules.exports)对外暴露接口,通过 require 加载模块 n ...

  10. RESTful杂记

    在网上找了许久的关于REST的资料,发现网上大部分都是说的比较片面,虽然有部分说出了本质,但也没有详细提出,所以在这里记录一下. RESTful是什么 首先,维基百科是这样说的: 表现层状态转换(RE ...