Django 使用体验

用过许多的web开发框架,我是随着 Python这股热潮来参考的 web 开发方法 Django,以前也有使用过 Java 的 springMVC,RoR 框架。就着开发比较常见的几个问题,谈谈本身粗浅的见解。web

结构:语言体系和开发习惯,Java 相对的定义均可以本身尽心约束和配置,彻底能够按照本身公司的结构和习惯来编写,因此不存在什么灵活性一说。符合本身公司和团队的规范就好。Django也相对相似,对静态目录经过系统自带的os,path和setting配置能够指定相应的目录做为静态目录或文件的上传目录等相似的功能。在系统的功能规划方面,经过Django生成的工做目录会提供基础的程序,包括初始的wsgi,setting,url等项目基础文件以外,经过django manager startapp会在同级目录下生成相对应的app目录结构,总体来说文件结构也广泛固定。RoR则依赖“约定大于配置“的信条把绝大部分的目录都规定的妥稳当当。作过相似开发的开发人员基本上都熟悉。完整的mvc目录结构,标准的public,static等都是按照通用的工程结构而来。spring

image.png

至于开发语言,单单讨论Java,Python,Ruby孰优孰劣彻底没意义,不讨论,但Python那种强迫症的tab间隔习惯我很喜欢。数据库

经常使用的开发场景django

  • 自动化工具方面,随着Docker,Jenkins之类的工具推出。Java的自动部署和脚手架能够彻底本身实现,可是就纯框架自带的功能而言,Django,RoR自带的脚手架确实比较优秀,Django能够经过脚手架自建工程、创建模块、经过模型建立数据库、创建数据库迁移任务。而RoR在这类功能基础之上还提供了一键远程部署、数据库版本回滚、
  • 开发流程和模板:RoR,Django均可以经过指令来生成模块代码,Java没有。Django开发中也封装了一些经常使用的ListView,DetailView,TemplateView来减小开发的代码量。生成完模块代码后,Django能够经过系统自带的Model层的定义在app中的admin.py经过@注册进入系统自带的后台管理中。不须要任何开发就能够实现web界面对数据的管理功能。这一点我相信是Django最强大也是最遭诟病的地方。优势在于不须要任何代码开发就能够把模型一件注入进入管理平台。只须要配置模型的字段就可实现模型的CURD,List页面的过滤查找。缺点是管理平台很是死板修改难度极大,好比要修改后台的模板风格、对模板变量添加一些经常使用的处理(好比把{{ temp }}从1替换成为”男”都须要编写代码来实现。)模板中不能使用Python的功能,须要符合模板的Api语法。Java,RoR则能够彻底使用语言自带的功能,而且Java能够选择各种模板库做为本身的view展现层,可是他们都没有Django自带的实现须要自行开发。
  • 相关的插件之类:在这里的表现其实都挺不错的,相对来讲可能Django,RoR更加的让开发人员“不用太想事儿“经过简单的配置就能够完成相关的功能,例如:分页、查询后参数保持的分页,防CSRF提交、CKEditor富文本编辑框、文件上传、图片切图等。相对而言,Django,RoR由于其插件方式,而且自带了相关的初始插件脚本。如:CKEditor经过pip install,bundle install以后,能够运行一个执行脚本,默认把相关的上传路径,上传的文件类型,图片的自动切图等相关配置经过脚本自动生成,更加省力而已。而Java的强项都是在系统架构方面,如:工做流模块、系统权限模块、数据缓存、分片、微服务等架构层级。因此就平常的业务代码开发而言Django,RoR的亲和力更好,开发中下规模的系统而言。Django,RoR更加具有优点。
  • API和测试:基本都差很少,swagger应该都会有相关的支持,至于测试我想Java应该更加优秀。自己就是一个庞大、繁杂的体系,定制化的自由度也更高。至于文件结构之类,那就是萝卜白菜的事也没有讨论的必要。

我的的感受,其实Django的开发很尴尬,介于中间的位置。说全自动又没有Rails好,说定制程度和灵活性也没有Java好,我不太喜欢它的继承父类而后重写的方式。一开始都为了这个开发绕了很久,报错信息感受也没有特别出彩。若是是纯选择开发web我应该仍是会选择RoR。接下来就是我的的看法了,由于Python对于大数据、网络抓包、系统底层的服务编程更好。这也是相对RoR的优点。至于Java,嗨,世界第一还有什么好说的。以上是我做为一个彻底没有接触过 Python 的萌新的使用体验。编程

推荐阅读:胡阳编写的 《Django企业开发实战高效Python Web框架指南》,完完整整的本身走一遍,相信每一个人都会有本身的开发理解。缓存

image.png

相关文章
相关标签/搜索