我为什么不用Django而用Flask?
前言
对于初学者来说,找到一个好的框架来学习或者项目开发都是非常有必要的,而当你有一定开发经验后,你应该选择适合当前业务需要的框架。我这里并不想探讨哪个框架好哪个不好,这个永恒的话题就跟探讨“世界上哪种编程语言最屌”是一样的。
分析
面对一个项目需求,不要着急去开发,学会控制开发成本的前提是明白技术难点可能带来的额外的时间消耗。对于我这种中级Python开发人员来说,并没有实质上的项目经验,没有开发过大型的线上项目,无非是爬虫写了一堆又一堆,本质上跟初学者差别不大,充其量也就算一个编码经验丰富的码农而已。所以在遇到难度相对较大的项目需求时,往往会纠结该如何选择框架上,这也会浪费掉大量的时间。
选择
所谓项目的难度大,要么是业务类型繁多,业务逻辑复杂。要么是涉及到一些扩展功能,比如需要调用系统的shell命令、串口通信等等。前者没有技术难点,仅仅是业务复杂,考虑到后期项目扩展,可能需要一个良好的系统架构。对于后者来说,可能存在难以实现的技术难点,要想搞定所有的技术难点,需要重新学习对应的知识,包括后面的代码测试,环境模拟测试等等一系列操作,这个时间是很难估算的。
Pythonweb框架里面比较出名的Django和Flask的选择很是让人头疼。
在初学Pythonweb的时候,很多老手都推荐学习Django,原因是因为Django相对比较完善,功能非常强大,有点像著名的ThinkPHP框架。老手们说的并没有错,但是这样一开始就入手一款重量级框架可能不是一个好的开始。
Django框架的强大就肯定意味着它是一款重量级框架,而对于初学者来说,这可能是一种灾难。如果初学者没有其他语言的基础,没有后端开发的经验,那么这种方式可能直接就导致放弃。
附:Django Web开发指南.pdf http://www.gooln.com/other/55845.html
Pythonweb的入门,使用web.py是非常好的选择。不管是Django还是Flask,他们设计的基础都是web.py。不同的是Django设计的更复杂,更像是一间做好硬装的房子,你只需要稍微做一下软装,布置一下家具就能把整个房间设计的很漂亮。
Flask就不太一样了,它仅仅帮你做好了建房子所需要的材料,房子如何搭建,如何装修全都得靠你自己动手,所以同一个项目,使用Flask来做,不同的人可能设计出来的架构完全不同,而使用Django框架做出来的架构可能都差不多了。
对于用过MVC框架的开发者来说,上手Django是很快的,因为Django也是MVC模式。Flask就没有什么模式可言了,仅仅提供了一种服务而已,要搞成什么样子全靠自己。所以如果你想自己去设计目录结构,模块的划分等个性化设计时,推荐使用Flask。弊端也很明显,如果你不是一个经验丰富的开发者,你很可能会把整个项目架构设计的乱七八糟。
对于我来说,很多时候一个项目刚开始并不觉得是个大项目,做到后面功能越来越多,扩展越来越多,就变成了一个大项目,而使用Flask就很容易的完成这个任务,小型项目快速开发,大项目设计灵活。
我为什么不用Django而用Flask?的更多相关文章
- 信号(Django信号、Flask信号、Scrapy信号)
简介 Django.Flask.scrapy都包含了一个“信号分配器”,使得当一些动作在框架的其他地方发生的时候,解耦的应用可以得到提醒. 通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒 ...
- Django 的信号 & Flask 的信号
信号:框架内部已帮助开发者预留的可扩展的位置 一.Django 的信号 项目目录结构: django_signal |--- app01 |--- models.py |--- views.py .. ...
- 浅谈Python Web 框架:Django, Twisted, Tornado, Flask, Cyclone 和 Pyramid
Django Django 是一个高级的 Python Web 框架,支持快速开发,简洁.实用的设计.如果你正在建一个和电子商务网站相似的应用,那你应该选择用 Django 框架.它能使你快速完成工作 ...
- 续--Flask, Django - 区别
1. 目录结构 参考:https://blog.csdn.net/yang9520/article/details/79740374 中文文档(http://docs.jinkan.o ...
- Flask, Django - 区别,个人体会
1. 目录结构 一般情况下,Django很系统.统一.Flask项目目录风格不同一,即使用上了蓝图. 2. 数据库迁移 Flask要用第三方extensions,而Django自带,这个很方便. 3. ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- Django和Flask的区别以及运行流程
Django: Python Web框架里比较有名当属Django,Django功能全面,它提供一站式解决方案,集成了MVT(Model-View-Template)和ORM,以及后台管理.但是缺点也 ...
- 真正搞明白Python中Django和Flask框架的区别
在谈Python中Django框架和Flask框架的区别之前,我们需要先探讨如下几个问题. 一.为什么要使用框架? 为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应 ...
- Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...
随机推荐
- vector<vector<int>> 使用简单示例
#include <iostream> #include <vector> using namespace std; int main() { vector<vector ...
- centos用ifconfig不显示ip地址的解决方法
解决办法: 第一步: 输入ip addr 发现ens33中并不包含IP内容 第二步: 输入cd /etc/sysconfig/network-scripts/ 回车 然后输入 ls 回车 第三步:选 ...
- [软件工程]团队介绍&学长采访
项目 内容 这个作业属于哪个课程 2019春季计算机学院软件工程(罗杰) 这个作业的要求在哪里 第一次团队作业 - 采访! 我们在这个课程的目标是 团队开发,合作学习 1.团队介绍 岗位 人员& ...
- kerl build error
删除 archives文件夹就行了
- 洛谷 P4280 bzoj1786 [AHOI2008]逆序对(dp)
题面 luogu bzoj 题目大意: 给你一个长度为\(n\)的序列,元素都在\(1-k\)之间,有些是\(-1\),让你把\(-1\)也变成\(1-k\)之间的数,使得逆序对最多,求逆序对最少是多 ...
- C# 关于utf-8的研究
前提 如果一不小心把字符转成utf8的格式,但是却产生了乱码.这个时候要么就是寻找其他的转码方式,要么就不想要了,直接过滤吧. 这里说的是直接过滤的办法. 参考链接 https://netvignet ...
- UESTC - 1724 GCD区间求和
依然是神奇的欧拉函数 若GCD(n,i)=k 则GCD(n/k,i/k)=1, 令i/k=x,有GCD(n/k,x)=1, →k*GCD(n/k,x)=1中x的个数 = GCD(n,i)=k的和 范围 ...
- maven-javadoc-plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javad ...
- qs.parse() 和 qs.stringfy() 之 传输数据秘籍
qs是一个npm仓库所管理的包,可通过npm install qs命令进行安装. 1. qs.parse()将URL解析成对象的形式 const Qs = require('qs');let url ...
- Java基础20-构造代码块
特点: 对象一建立就运行了,而且优先于构造函数执行 作用:给对象初始化的 构造代码块和构造方法的区别: 构造方法是对应的对象进行初始化 构造代码块是给所有的对象进行统一的初始化 public clas ...