漫画,小莉要学Python后端,看大牛是怎么教她的!

漫画,小莉要学Python后端,看大牛是怎么教她的!


漫画,小莉要学Python后端,看大牛是怎么教她的!


漫画,小莉要学Python后端,看大牛是怎么教她的!


Python 是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大。Python 类库极其丰富,Python 在 web 开发方面有着广泛的应用,比如常见的 python web 框架有 django 、tornado、flask、sanic等。今天我们就聊一下这四个 python web 后端框架,通过这篇文章你会对这几个 web 框架有一些的认识和了解。


01

什么是Web框架


先简单了解一下web框架是什么,web框架主要用于动态网络开发,动态网络主要是指现在的主要的页面,可以实现数据的交互和业务功能的完善。

使用web框架进行web开发的时候,在进行数据缓存、数据库访问、数据安全校验等方面,不需要自己再重新实现,而是将业务逻辑相关的代码写入框架就可以也就是说,通过对web框架进行主观上的“缝缝补补”,就可以实现自己进行web开发的需求了。



02

Django

漫画,小莉要学Python后端,看大牛是怎么教她的!

1).Django 在 github 上 47.1K 个 Star

它可以用更少的代码更快地构建更好的Web应用程序,实现快速开发和简洁实用的设计。可解决 Web 开发的大部分麻烦,让开发者可以专注于编写应用程序而无需重新发明轮子。

django 的项目代码结构如下,django_tutorial 是项目根目录,主要是项目的一些常规配置,app01是我新建的 app 应用,相当于一个业务上的功能模块。


漫画,小莉要学Python后端,看大牛是怎么教她的!

2).飞速打开浏览器,看一下效果:            

漫画,小莉要学Python后端,看大牛是怎么教她的!


3).Django 还自带 admin 管理后台

如果你业务需求比较简单可以直接使用它的后台实现你的业务,就不用手写业务代码了。

漫画,小莉要学Python后端,看大牛是怎么教她的!


4).django 还自带了强大的数据库 ORM 组件

对数据库进行增删改查不同写原生sql语句,按照它 ORM 语法编写代码即可。如果你换了数据库也不用修改ORM语句。用 django 和数据库打交道是很舒服的。


django 大包大揽,还自带很多其他常用工具和组件(比如用户认证、权限管理、分页、缓存、邮件发送), 适合快速开发功能完善的企业级网站。用它来快速开发一些 Web 应用是不错的。




03

Tornado


漫画,小莉要学Python后端,看大牛是怎么教她的!


Tornado 在 github 上 18.8K Star ,它是一个 Python Web 框架和异步网络库,它不仅仅是一个 web 框架,也有HTTP服务器的功能。通过使用非阻塞网络I / O,Tornado 可以扩展到成千上万的开放连接,非常适合长时间轮询,WebSocket 和需要与每个用户建立长期连接的其他应用程序。你可以使用一个单文件就可以写一个小项目。


漫画,小莉要学Python后端,看大牛是怎么教她的!


运行之后,打开浏览器看一下效果:

漫画,小莉要学Python后端,看大牛是怎么教她的!

Tornado 和 django 的开发思维完全不同:

1).基本上整个 tornado 都是围绕着异步和协程的支持使用 async/await 异步写法。tornado 并没有自带ORM组件、后台admin、邮件发送等常用web模块,只是提供了核心的功能,其余的都需要你自己来做。

2).Django 为代表的传统框架采用 WSGI 协议与服务器对接的,而这类服务器通常是基于多线程/多进程的,也就是说每有一个网络请求,服务器都会有一个线程/进程进行处理。

3).Tornado 核心模块是ioloop,当一个请求特别耗时,Tornado就把它丢在那处理,然后继续处理下一个请求,确保后面的请求不会被卡死。

Tornado之所以能同时处理大量连接的原因:

  • 利用高效的epoll技术处理请求,单线程/单进程同时处理大量连接。

  • 没用使用传统的wsgi协议,而是利用Tornado自己的web框架和http服务形成了一整套WSGI方案进行处理。

  • 异步处理方式,Tornado提供了异步接口可供调用。



04

Flask


漫画,小莉要学Python后端,看大牛是怎么教她的!


Flask 在 github 上 48.8K 个 Star,  它是一个轻量级的 Web 应用程序框架。它旨在使快速入门变得容易,并具有扩展到复杂应用程序的能力。它最初是围绕 Werkzeug 和 Jinja 的简单包装,并已成为最受欢迎的Python Web应用程序框架之一。


Flask提供了建议,但不强制执行任何依赖关系或项目布局。由开发人员选择他们想使用的工具和库。通过几行代码就可以写一个小项目,项目结构看下图:


漫画,小莉要学Python后端,看大牛是怎么教她的!


Flask要比上面两种架构更轻便,运行之后也会产生一个链接,我们打开浏览器看一下:

漫画,小莉要学Python后端,看大牛是怎么教她的!

Flask 和 django 一样,是阻塞io模型:

1).框架性能上差不多。它和 django 不同的是只是提供基本核心的功能,没有提供一些常用的组件(比如用户认证、权限管理、分页、缓存、邮件发送)这些,如果需要使用那些组件功能,需要使用第三方拓展,它很轻,一个py文件就可以写一个web项目。


2).Flask 比 Django 更灵活,用Flask来构建应用之前,选择组件的时候会给开发者带来更多的灵活性 ,但是要考虑使用的这些第三方拓展是否兼容。Flask 的灵活性,也是双刃剑。



05

Sanic


漫画,小莉要学Python后端,看大牛是怎么教她的!


Sanic 在github上是 13.5K Star, 它是Python 3.6以上版本的网络服务器和网络框架,旨在快速发展。它允许使用Python 3.5中添加的 async / await 语法,这使您的代码无阻塞且快速。


该项目的目标是提供一种简单的方法来启动和运行高性能的HTTP服务器,该服务器易于构建,扩展和最终扩展。简单的项目代码如下:

漫画,小莉要学Python后端,看大牛是怎么教她的!

有没有发现 sanic 开发项目的写法和 flask 代码的写法很相似,也有blueprint(蓝图),  sanic框架是和 flask 风格相似的异步协程框架,简单轻量,并且性能很高。python3.4 推出了 asyncio,解决令人诟病的异步io性能问题。


3.5后推出了uvloop, 基于libuv,libuv是一个使用C语言实现的高性能异步I/O库,uvloop 用来代替 asyncio 默认事件循环ioloop,可以进一步加快异步I/O操作的速度,而tornado 在python3中还没有使用uvloop, 它使用的还是 ioloop 。但是 sanic 是个比较新的框架,对应的开发文档资料比较少。


总结:

哪个框架最好——世上没有最好的框架,只有最适合你自己、最适合你的团队的框架。在 web 开发过程中,性能问题最常出现在数据库访问和文件读写上。

选择使用哪个 web 框架的因素:

1). 开发项目的业务类型,需要快速开发还是对性能要求比较高一些;

2). web 框架文档资料,框架生态(第三方拓展)是否丰富

3). 团队个人水平

所以每个 web 框架,各有各的优缺点,最终使用哪个 web 框架需要综合考虑。


近期热门:
高手心得|菜鸟学Python从入门到进阶
干货来了!菜鸟入门最经典的机器学习项目,面试必考!
400多人做过的8道Python极速入门题

漫画,小莉要学Python后端,看大牛是怎么教她的!


漫画,小莉要学Python后端,看大牛是怎么教她的! 点击阅读原文,阅读菜鸟学Python 400篇干货!

获取干货源码,阅读更多有趣的案例,也可以直接去微信公众号【菜鸟学Python】获取。
菜鸟学Python » 漫画,小莉要学Python后端,看大牛是怎么教她的!