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. Tapdata x 轻流,为用户打造实时接入轻流的数据高速通道

      在全行业加速布局数字化的当口,如何善用工具,也是为转型升级添薪助力的关键一步.   那么当轻量的异构数据实时同步工具,遇上轻量的数字化管理工具,将会收获什么样的新体验?此番 Tapdata 与轻流 ...

  2. Tapdata 与星环 KunDB 完成产品兼容互认证

      近日, Tapdata 实时数据即服务平台(Tapdata Real Time DaaS)与星环 KunDB 完成产品兼容互认证.经深圳钛铂数据有限公司和星环信息科技(上海)股份有限公司共同严格测 ...

  3. String类常用的API

    String类常用的API 字符串内容的比较: 注意: 不能使用 == 去比较两个字符串的内容.原理:比较的是字符串的地址. (如果两个字符串都是使用""进行赋值,那么他们都是放在 ...

  4. 'cross-env' 不是内部或外部命令

    yarn start yarn run v1.22.10$ cross-env APP_TYPE=site umi dev'cross-env' 不是内部或外部命令,也不是可运行的程序或批处理文件.e ...

  5. 如何在CentOS上找出逐渐耗尽磁盘空间的目录和文件

    起因 随着系统运行,CentOS空间不断减少,对此非常焦虑,到底磁盘空间被哪些新增文件占用了呢? 分析过程,主要使用du命令,逐层找出消耗空间的目录 1.在根目录下检索一下文件的占用情况,执行du命令 ...

  6. net core天马行空系列-各大数据库快速批量插入数据方法汇总

    1.前言 hi,大家好,我是三合.我是怎么想起写一篇关于数据库快速批量插入的博客的呢?事情起源于我们工作中的一个需求,简单来说,就是有一个定时任务,从数据库里获取大量数据,在应用层面经过处理后再把结果 ...

  7. 如何让照片中的人物笑起来?HMS Core视频编辑服务一键微笑功能,让人物笑容更自然

    最近一键"露齿笑"席卷全网,无论是短视频用户还是社交App用户都在使用这项黑科技.当三两好友聚会拍集体照留念时,为了处理个别人的表情"瑕疵",让大家都尽量保持微 ...

  8. Vue 配置代理

    说明:这里的vue代理是指用vue静态服务器做代理.使用的是 http-proxy-middleware 这个模块(这个模块相当于是node.js的一个插件). 版本: vue-cli 3.0以上 修 ...

  9. Python3利用Twilio(国际)以及腾讯云服务(国内)免费发送手机短信

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_152 短信服务验证服务已经不是什么新鲜事了,但是免费的手机短信服务却不多见,本次利用Python3.0基于Twilio和腾讯云服务 ...

  10. 使用rust调用c++静态库并编译nodejs包

    在项目上经常要用到身份证阅读器.护照阅读仪.指纹仪等各种品牌硬件,假如每套系统的都做集成开发那代码的维护成本将变得很高,为此采用rust来调用厂家提供的sdk c++开发包并封装成nodejs包,用f ...