Python Web 框架基础
1,Web框架简介
什么是Web框架
Web框架就是用来简化Web开发的软件框架,无非就是一些工具的集合,避免重复造轮子罢了。一般框架都具有:管理路由,支持数据库,支持MVC(下面会介绍),支持ORM,支持模版引擎,管理会话和Cookies。
2,什么是MVC
MVC(Model View Controller),Model主要封装与业务逻辑相关的数据和处理方法,View是数据的HTML呈现,Controller负责响应请求,协调Model与View。这是一个分离思想,前后端分离罢了。这样做的话代码的复用性和组织性好。
3,什么事ORM
这个上一篇说过,请看上一篇。ORM系统一般以中间件形式存在,主要实现程序对象到关系型数据库数据的映射。
ORM和数据库的对应关系
4,什么是模版引擎
为了让用户界面和业务数据分离产生的,它生成特定格式的文档,用与网站的模版引擎一般生成一个标准的HTML文档。Python内置的很多Web框架内置了模版引擎,使用模版引擎可以在HTML中使用变量。
2,常用Web框架
前面说过一个WSGI,只要遵循WSGI接口规则,就可以自主开发WEb框架。市面上这些框架上百个,咱是初学者也就学一些主流的框架学习使用好一点,主流框架文档齐全,技术积累较多,社区繁盛,可以得到好的支持。
1,Django
这个足以广为人知吧,使用也比较广泛。它拥有世界上最大的社区,最多的包。文档非常完善,提供了一些一站式的解决方案,包括一些缓存啊,ORM,管理后台,验证,表单处理等。是的开发复杂的数据库驱动变得简单。但是Django系统耦合度较高,替换内置功能比较麻烦,学习曲线陡峭,
2,Flash
一个轻量级的Web框架,也是一个小一点的胶水框架罢了。它给Werkzeug和Jinja(WSGI协议及werkzeug-概念篇 - 掘金 (juejin.cn),FastAPI 快速开发 Web API 项目: 模板和 Jinja 介绍 - 掘金 (juejin.cn))粘一块了,容易被扩展。
3,Tornado
它不仅是个框架,还是个Web服务器。它为了解决试试服务而诞生的。 Tornado使用了一部非阻塞IO,它运行速度非常快。
4,FastAPI
FastAPI是一个现代的高性能快速的Python Web框架。它基于标准的Python类型提示,使用Python5.6+构建API。它使用了类型提示,可以减少开发人员发生的错误。它还可以自动生成API文档,编写API接口后,可以使用标准的UI来使用API。
3,开发环境
1,虚拟环境
创建虚拟环境和管理虚拟环境,以及如何管理包。 Python 虚拟环境管理总结 - 掘金 (juejin.cn)这篇文章从原生python的pip和Python的包管理工具conda来说得,刚学习的同学可以看pip的这个,不过个人还是习惯conda。
2,pip包管理工具
参考上面的链接,最好在配置一下自己的国内镜像源,方便下载第三方的包。pip更换国内镜像源 - 掘金 (juejin.cn)这篇文章说的还行。
4,部署腾讯云服务器
1,WSGI+Gunicorn+Nginx+Supervisor部署方式
Flask、Django等框架自身待着Web服务器,在本地可以直接去用内置服务器启动项目。但是性能不是特别好,主要用来开发测试,项目线上发布,需要使用一些高性能的WSGIServer。
1,WSGI
WSGI中有两个,接收请求的Server和处理请求的Application。当Serve收到一个请求后,通过Socket将环境变量和一个Callback回调函数传给后端Application,Application完成页面组装通过Callback把内容返回给sever,最后由sever将响应给Client
2,Gunicorn
常见的WSGI Server容器有Gunicorn和uWSGI。Gunicorn直接用命令启动,不用编写配置文件。相反uWSGI就比较麻烦。而且Gunicorn服务器与各种Web框架兼容,实现简单,服务器资源少且速度更快。
3,Nginx
在Gunicorn服务前在部署一个Nginx服务器。Nginx是一个Web服务器,是一个返向代理工具,通常用来部署静态文件。通过Gunicorn启动服务,在添加一个Nginx服务。可以做一些Gunicron做不到的事情。
1,静态文件支持
经过配置后,Nginx可以直接处理静态文件请求而不用经过应用服务器,比面占用运算资源,可以缓存静态资源,让访问静态资源的速度提高。
2,抗并发压力
Nginx可以吸收一些瞬时间的高并发请求,先保持住链接(缓存HTTP请求),然后后端慢慢处理。
3,HTTP请求头缓存头处理的也比Gunicron和uWSGI完善。
4,多态服务器,可以提供附在均衡和反向代理
4,Supervisor
程序异常退出时,让程序重新启动。Supervisor是一个进程管理工具。