Web 开发是Python 语言应用领域的重要部分,也是工作岗位最多的领域。如果你对基于Python的Web 开发有兴趣,正打算使用Python 做Web 开发,或者已经是一个Web 开发者有工作需要,要做自动化运维、数据的图形化展示等,那么学习一门基于Python的Web 开发框架是必修课。

Python作为当前最火爆最热门,也是最主要的Web 开发语言之一,在其近三十年的历史中出现了数十种Web 框架,比如Django、Tornado、Flask、Twisted、Bottle 和 Web.py 等,它们有的历史悠久,有的发展迅速,还有的已经停止维护。

Django

  • 诞生于2003年,是Python 世界里最负盛名、用户最多、使用范围最广、最成熟的Web 框架,最初被用来制作在线新闻的Web站点。Django 的各模块之间高效集成,提供了丰富的开发工具,以一站式服务闻名,其文档健全,社区活跃,开发者在遇到问题时能迅速找到解决办法。

Tornado

  • 一个强大的、支持协程、高效并发且可扩展的Web 服务器,发布于2009年9月,应用于 FriendFeed、Facebook 等社交网站。它的强项在于可以利用异步协程机制实现高并发的服务,但在其它方面则有些薄弱。

Flask

  • 诞生于2010年,它吸收了其他框架的一些优点并且把自己的主要领域定义在了微小项目上,以短小精干,简洁明了著称。通常我们在临时需要的时候,会随手写几行代码,使用Flask 快速启动一个Web 网页,做一些验证性的工作。

Twisted

  • 它不像前三者着眼于Web 应用开发,而是适用从传输层到自定义应用协议的所有类型的网络程序的开发,并能在不同的操作系统上提供很高的运行效率。

有那么多的Web 框架,我们显然没有精力全都学一遍,也不可能全部精通,必然要有所取舍,那么该如何选择呢?有哪些可以参考的选择依据呢?

  • 选择更主流的框架。主流框架的用户多、文档更齐全,技术文献积累更多,社区更繁盛,能得到更好的帮助和支持。
  • 选择更活跃的框架。关注项目的版本迭代速度、在 GitHub 中的更新频率、Issue和Pull Request 的响应情况。如果一个项目长期没有更新,或者有一堆的问题需要解决但是没有得到响应,就不应该是你学习的对象。
  • 选择能够满足需求的框架。没有最好的框架,只有更合适的框架。你所选择的Web 框架不仅需要满足当前的需求,还要充分考虑项目发展一段时间后的情况,即适用性和可拓展性,避免盲目选择而导致将来推倒重来的情况。
  • 选择时效性好的框架。在学习和使用框架的时候经常需要查阅和参考各种网络上的文章、博客和教程,但是需要注意它们的发表时间。有些框架的相关文章已经很老,很久没更新了,应该放弃这种框架。有的框架一直以来都有不断的新文章、新博客出现,是比较不错的选择。
  • 选择入门友好的框架。详细的技术文档、官方教程对新手来说都是极大的帮助和鼓励。

根据以上的几条原则推荐大家从 Django 始学习基于Python 的Web 开发!

作为最知名、应用最广泛、功能最全面的Web 框架,它能够满足从小型到大型项目的渐进式开发,提供admin 后台、用户和权限管理、缓存、数据库迁移等各种功能,包含大量的组件和常用工具。Django 在GitHub 上非常活跃(https://github.com/django/django)其Star 66K,版本迭代速度也非常快,网络上的学习和参考文献非常多。

Flask可以比作“DIY组装台式机”,性能优良、快速简单、自定义灵活,但是你得要知道如何搭配模块,如何组装各部件,如何更换模块等等,一旦你某个环节处理得不是那么优秀,就会成为整个项目的痛点。与之不同的是,Django 有着完整的工具链,各个模块之间综合集成,配合度好,可以比作“苹果一体机”,你不用管它内部组件是如何搭配,如何安装的,直接开机使用就好了,并且保证安全可靠、性能优异。


想要熟练地使用Django 进行工作,开发生产环境可用的,能够应对一定规模访问量的Web 应用,开发者要学会的远远不止Django 本身。Linux 管理、Python 基础、环境搭建、前端语言、RESTFul API 设计、网站架构、系统管理、服务部署、持续集成、数据库管理、并发处理等等,都是相关的知识领域,包括并且不限于以下的内容

  • Python 语言本身
  • 前端HTML、CSS、Javascript 等语言
  • 数据库、缓存、消息队列等技术
  • 日常使用Linux或Mac 系统工作(Windows 属于标配)
  • 性能优化经验,能快速定位问题

除此之外,还要对业务有深刻理解,能够写出可维护性足够高的代码。当然,以上都是对经验丰富的开发者而言,对于新手刚入门者,我们朝着这个目标努力学习就好。

基于Python的Web开发技术栈

Python Web开发主流框架的更多相关文章

  1. python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...

  2. Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...

  3. python web开发flask框架 安装与环境

    # encoding:utf-8 # 从flask这个框架中导入Flask这个类 from flask import Flask # 初始化一个Flask对象 # Flasks() # 需要传递一个参 ...

  4. 2020 python web开发就业要求锦集

    郑州 Python程序员 河南三融云合信息技术有限公司 6-8k·12薪 7个工作日内反馈 郑州 1个月前 本科及以上2年以上语言不限年龄不限 微信扫码分享 收藏 Python程序员 河南三融云合信息 ...

  5. Python Web开发中的WSGI协议简介

    在Python Web开发中,我们一般使用Flask.Django等web框架来开发应用程序,生产环境中将应用部署到Apache.Nginx等web服务器时,还需要uWSGI或者Gunicorn.一个 ...

  6. python web 开发学习路线

    转载,备着 自己目前学习python web 开发, 经过两个月的摸索,目前对web开发有了浅显的认识,把自己的学习过程贴出来.1.python入门推荐老齐<从零开始学python>,&l ...

  7. 转载:Python Web开发最难懂的WSGI协议,到底包含哪些内容?

    原文:PSC推出的第二篇文章-<Python Web开发最难懂的WSGI协议,到底包含哪些内容?>-2017.9.27 我想大部分Python开发者最先接触到的方向是WEB方向(因为总是有 ...

  8. Python Web开发:Django+BootStrap实现简单的博客项目

    创建blog的项目结构 关于如何创建一个Django项目,请查看[Python Web开发:使用Django框架创建HolleWorld项目] 创建blog的数据模型 创建一个文章类 所有开发都是数据 ...

  9. 《Python Web开发实战》|百度网盘免费下载|Python Web开发

    <Python Web开发实战>|百度网盘免费下载|Python Web开发 提取码:rnz4 内容简介 这本书涵盖了Web开发的方方面面,可以分为如下部分: 1. 使用最新的Flask ...

随机推荐

  1. java中的变量及命名

    变量 变量顾名思义就是可以变化的量 因为java是强类型语言,所以每个变量都必须声明其类型 java变量是最基本的存储单元,要素包括变量名称,变量类型和作用域. 目录 变量 1.常用的变量创建 2.变 ...

  2. C语言-typedef和#define

    1.关键字 typedef 为一个数据类型起一个新的别名,typedef 的用法一般为: typedef OldName NewName; 需要强调的是,typedef 是赋予现有类型一个新的名字,而 ...

  3. Oracle oci python sdk简单使用

    听说Oracle有个oracle always free计划,所以赶紧申请了个Oracle Cloud的账号,主要是用来FQ用的,之前用过Google的,不过只有1年的期限,由此看来这个很吸引人,搭建 ...

  4. 华为云Stack南向开放框架,帮助生态伙伴高效入云

    摘要:CloudBonder的生态社区通过一系列生态项目,解决提交叉组合.架构分层不清晰.运维界面不清晰等问题,简化对接流程,降低生态伙伴对接成本,缩短对接时间. 本文分享自华为云社区<[华为云 ...

  5. 基于OpenCV实现对图片及视频中感兴趣区域颜色识别

    基于OpenCV实现图片及视频中选定区域颜色识别 近期,需要实现检测摄像头中指定坐标区域内的主体颜色,通过查阅大量相关的内容,最终实现代码及效果如下,具体的实现步骤在代码中都详细注释,代码还可以进一步 ...

  6. ServerlessBench 2.0:华为云联合上海交大发布Serverless基准测试平台

    摘要:华为云联合上海交大重磅推出ServerlessBench 2.0,为社区提供涵盖12类基准测试用例.新增5大类跨平台测试用例.4大类关键特性指标.且多平台兼容的Serverless开放基准测试集 ...

  7. flex 我所理解不够深刻的内容

    1.align-items属性   父元素 align-items属性定义项目在交叉轴上如何对齐. flex-start:交叉轴的起点对齐. flex-end:交叉轴的终点对齐. center:交叉轴 ...

  8. PHP小知识收集

    PEAR 是"PHP Extension and Application Repository"的缩写,即PHP扩展和应用仓库. PECL 是"PHP Extension ...

  9. npm run dev 启动项目报错我的解决办法

    我的报错截屏 解决方案   1.    config文件中 index 文件中的 host 值如果是数字串就将其改为 localhost 2.    再次尝试 如果有遇到其他问题阔以将 node-mo ...

  10. Docker Compose安装部署Jenkins

    流水线可以让项目发布流程更加清晰,docker可以大大减少Jenkins配置. 1.前言 数据卷挂载到 /var 磁盘目录下,因为该磁盘空间较大,后面需要挂载容器数据卷,以防内存吃紧. 为了可以留存启 ...