一、具备技术能力至少熟悉一种Python web框架

熟悉Python语法

熟悉数据库、缓存、消息队列等技术的使用场景、使用方法

日常能使用Linux或Mac系统工作

有性能调优经验,能快速定位问题

对HTML/CSS/JavaScript有一定了解,有使用经验

有Vue基础

二、为什么选择Python作为Web开发

现在无论PC端还是移动互联网的Web开发工作,对产品做的各种尝试都需要更快地拿出模型并进行迭代,创业公司尤甚。Python语言更好地符合了时代的需求,所以它也受到了越来越多的关注,越来越多的人接受Python,并在生产环境中使用它。个人认为Python非常适合做Web开发,理由如下:Python是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时借鉴了简单脚本和解释型语言的易用性。Python非常适合做快速的原型开发,很多场景下的性能问题可以通过使用C/C++写Python扩展等方式优化解决。

Python应用广泛,在大数据、算法、运维等领域都有不错的对应工具和库,可以有效降低产品流程中不同职位之间的技术壁垒,团队人员的沟通更容易,解决问题也更快。

Python标准库和第三方的库很强大,有非常多的知名项目都是用Python编写的。

从2005年Django开源,2008年Reddit开源,到2010年Flask开源,Python用作Web开发已经有着10多年的历史,国内的豆瓣、搜狐,国外的Reddit、YouTube、Instagram、Pinterest、Bitbucket、Disqus、Dropbox等公司都选择Python作为Web开发的语言。不用担心Python可靠性与性能问题,因为它已经经受了时间和大规模用户并发访问的考验。

三、主流web框架DjangoDjango最初是被开发用来管理劳伦斯出版集团旗下一些以新闻内容为主的网站的,它以比利时的吉普赛爵士吉他手Django Reinhardt来命名,它和Flask是使用最广泛的Python Web框架。Django能如此知名很大程度上是因为提供了非常齐备的官方文档,它提供了一站式的解决方案,包含缓存、ORM、管理后台、验证、表单处理等,使得开发复杂的数据库驱动的网站变得很简单。但正因为它坚持自己对于Web框架的理解,系统耦合度太高,替换掉内置的功能往往需要花费一些功夫,所以学习曲线也相当陡峭。

FlaskFlask是一个轻量级Web应用框架,它基于Werkzeug实现的WSGI和Jinja2模板引擎。Flask的作者是Armin Ronacher,本来这只是作者愚人节开的一个玩笑,但是开源之后却受到Python程序员的喜爱,目前在GitHub上的Star数量已经超过了Django。它的设计哲学和Django不同:只保留核心,通过扩展机制来增加其他功能。Flask用到的依赖都是Pocoo团队开发的。Pocoo团队其他的项目还有Pygments、Sphinx、以及lodgeit。Flask的扩展环境非常繁荣,基本上Web应用的每个环节都有对应的扩展供选择,就算没有对应的扩展也能很方便地自己实现一个。

PyramidPyramid在国内知名度并不高,主要原因是中文文档匮乏,其高级用法需要通过阅读源代码获取灵感。尽管被Django和Flask的光芒遮蔽,但是它的性能要比Flask高。Pyramid的“灵感来源于Zope、Pylons1.0和Django。在我们的传统观点里,小框架通常牺牲了大框架的特色,反之亦然。但是事实上我们不能真正把控一个应用程序最终的发展情况,而Pyramid在努力朝着胜任不同级别应用的框架的方向在走。虽然它默认使用Chameleon和Mako模板,但很容易切换成Jinja2,甚至可以让多种模板引擎共存,通过文件后缀名来识别。豆瓣赞赏和豆瓣钱包等产品就是基于此框架实现的,代码量级和Flask相同,性能比Flask要略高。

BottleBottle也是一个轻量级的Web框架。它的特点是单文件,代码只使用了Python标准库,而不需要额外依赖其他第三方库。它更符合微框架的定义,截止到今天只有4100多行的代码。

TornadoTornado全称Tornado WebServer,最初是由FriendFeed开发的非阻塞式Web服务器,现在我们看到的是被Fackbook收购后开源出来的版本。它和其他主流框架有个明显的区别:它是非阻塞式服务器,而且速度相当快。得益于其非阻塞的方式和对epoll的运用,Tornado每秒可以处理数以千计的连接,这意味着对于长轮询、WebSocket等实时Web服务来说, Tornado是一个理想的Web框架。

四、框架的选择原则选择更主流的框架。因为它们的文档更齐全,技术积累要更多,社区更繁盛,能得到更好的支持。

关注框架的活跃情况。关注项目的更新频率、Issue和Pull Request(在本书中都简称PR)的响应情况。如果一个项目已经很长时间没有更新了,或者有一堆的问题需要解决但是没有得到回应,就不应该将这样的框架放在生产环境中。

确认选择的框架是否足够满足需求。没有最好的框架,只有最合适的框架。你所选择的Web框架不仅需要满足当前的需求,也要充分考虑项目发展一段时间之后的情况,即前瞻性。如果在做选择时有个人喜好这样的因素,需要确认自己有能力对选择的Web框架提供支持,避免盲目选择而导致将来推倒重来的情况。

注意媒体时效性。在做选择的时候可能会参考网络上的一些文章,但是需要注意其发表时间。举个例子,看了一篇2012年的博客,里面说应该选择A而不是B,并给了多个理由。而现在的情形可能已经发生了变化:B经过很久的努力已经做得更优秀或者2012年之后出现了更优秀的C。

客观看待媒体的观点。媒体的观点并不一定是正确的(或者不是全部正确),如果不是官方的说明,就应该保持怀疑和谨慎的态度,取其精华去其糟粕,切勿完全拿来主义,应该真正做实践验证之后再做决定。

web python识花_Python Web开发之初认识相关推荐

  1. web python识花_TensorFlow迁移学习识花实战案例

    TensorFlow 迁移学习识花实战案例 本文主要介绍如何使用迁移学习训练图片识别花朵的模型,即识别出图片上是何种花朵. 本文档中涉及的演示代码和数据集来源于网络,你可以在这里下载到:TRANSFE ...

  2. web python识花_7行Python代码,搭建可以识花的机器学习App|视频教程

    你想学Python,却不知如何着手,那你需要一种更加有趣的学习方式. Siraj Raval是一位人工智能领域的编程高手,毕业于哥伦比亚大学,曾任职于 Twilio 和 Meetup,他通过制作教程类 ...

  3. python web项目案例教程_Python Web开发案例教程(慕课版)——使用Flask、Tornado、Django...

    第1章 Web开发基础1 1.1 Web概述 2 1.1.1 什么是Web 2 1.1.2 Web应用程序的工作原理 2 1.1.3 Web的发展历程 2 1.2 Web前端开发基础 4 1.2.1 ...

  4. python django mysql web页面多级联动_Python Web实战:Python+Django+MySQL实现基于Web版的增删改查...

    前言 本篇使用Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能,旨在快速入门Python Web,少走弯路.效果演示在项目实战最 ...

  5. python基于web的安装程序_python web.py安装使用

    官方首页:http://webpy.org/) 它的源代码非常整洁精干,学习它一方面可以让我们快速了解python语法(遇到看不懂的语法就去google),另一方面可以学习到python高级特性的使用 ...

  6. python开发web运维工具_Python web 开发工具箱

    工欲善其事,必先利其器(装逼工具)Pycharm.专业的python IDE,功能很强大,特别喜欢它的代码merge工具,不想被编辑器折腾死的推荐直接使用,五星级推荐.(除了内存占用大点) vim.本 ...

  7. python 视图对象_python web框架篇:views视图函数

    Django请求的生命周期是怎样的? 简单地说,通过URL对应关系匹配 ->找到对应的函数(或者类)->返回字符串(或者读取Html之后返回渲染的字符串) 解剖起来如下: 1. 当用户在浏 ...

  8. python 服务框架_Python Web服务高并发框架【1】(Tornado)

    本节学习目标: (1)了解Tornado的特点 (2)了解Tornado工作流程 (3)掌握Tornado在Window及Linux中的安装 (4)理解同步.异步 (5)协程基础编程 本节课程内容: ...

  9. python web py官网_python web.py

    web.py 1.安装: wget http://webpy.org/static/web.py-0.37.tar.gz tar xvfz web.py-0.37.tar.gz cd web.py-0 ...

最新文章

  1. PCL点云数据 滤波降噪
  2. 中文分词工具的初步使用图解
  3. Boost:分配服务的实例
  4. 新手课堂之汽车灯光操作及位置
  5. LeetCode 842. 将数组拆分成斐波那契序列(暴力查找)
  6. 【ARTS】01_12_左耳听风-20190128~20190203
  7. java项目内存使用率过高排查_项目内存或者 cpu 占用率过高如何排查
  8. Flowable BPMN 用户手册 (v 6.5.0-SNAPSHOT)
  9. 再问数据中台 - 数据中台的典型架构是怎样的?
  10. iOS 开发中的各种证书
  11. js取thymeleaf值_26、模板引擎thymeleaf
  12. 位图BitMap大数据筛选
  13. npoi 未将对象引用设置到对象的实例_带你探索JVM的对象
  14. 《信号与系统》(吴京)部分课后习题答案与解析——第四章(PART6)(周期信号的FT与时域抽样)
  15. 航天金税502设置模拟环境步骤
  16. java中的radix_int radix()
  17. 图解FDISK与FORMAT命令分区与格式化
  18. 【安装填坑】-import win32api, sys, os ImportError: DLL load failed: 找不到指定的模块。
  19. 360插件化方案RePlugin学习笔记-插件与宿主间的通信方式
  20. mysql show processlist整理

热门文章

  1. 简洁好看的jmw网址导航网站源码
  2. PI染料|PI (碘化丙啶, Propidium Iodide)嵌入双链DNA后释放红色荧光
  3. 【Oracle笔记】
  4. Java用CMD打开指定文件和文件夹
  5. 笔记本电脑通过u 盘启动安装centos 7的教程
  6. vps远程桌面linux,vps一键安装桌面及远程桌面
  7. LoRaWAN设备类型、终端入网方式及消息上下行
  8. VS错误提示:C4996 解决方法
  9. H3C/华为交换机配置NTP客户端
  10. SpringBoot+vue全栈开发实战笔记太香了