Django、Flask、Tornado比较

一、Flask运行过程

1、当客户端想要获取资源时,一般会通过浏览器发起HTTP请求

2、此时,Web服务器会把来自客户端的所有请求都交给Flask程序实例

3、程序实例使用Werkzeug来做路由分发

4、根据每个URL请求,找到具体的视图函数并进行调用

5、Flask调用视图后,可以返回两种内容:字符串、HTML模板内容

二、Flask中WTF表单

WTForms支持的HTML标准字段:

StringField(文本字段)、IntegerField(文本字段,值为整数)、RadioField(一组单选框)、SelectField(下拉列表)、SubmitField(表单提交按钮)

使用Flask-WTF需要配置SECRET_KEY。

三、Flask中的session

1、数据库中的session,db.session.add()

2、flask_session扩展中的session,可以把信息存在服务器中,客户端浏览器只存储sessionid

3、flask自带的session,是一个请求上下文,把信息加密后存储在客户端浏览器cookie

四、Flask依赖的组件

Route(路由)、templates(模板)、Models(orm模型)、blueprint(蓝图)、Jinja2模板引擎

第三方组件:flask_bootstrap、flask-WTF、flask_sqlalchemy

五、Werkzeug与jinja2

Werkzeug:Werkzeug就Flask使用的底层WSGI库,Werkzeug 提供了 python web WSGI 开发相关的功能:

  1. 路由处理:如何根据请求 URL 找到对应的视图函数
  2. request 和 response 封装:提供更好的方式处理request和生成response对象
  3. 自带的 WSGI server:测试环境运行WSGI应用

Jinja2:Jinja2是基于python的模板引擎

六、Flask、Django、Tornado比较

Django:大而全的方向,开发效率高。它的MTV框架自带的ORM,admin后台管理,sqlite数据库和开发测试用的服务器

Flask:轻量级的框架,自由、灵活、可扩展性很强,核心基于Werkzeug WSGI工具和jinja2模板引擎

Tornado走的是少而精的方向,性能优越。它最出名的是异步非阻塞的设计方式

Tornado的两大核心模块:1.iostraem:对非阻塞式的socket进行简单的封装 2.ioloop:对I/O多路复用的封装,它实现了一个单例

七、项目部署

阿里云ubuntu16.10+nginx+uwsgi

八、Restful架构

1、每个URL代表一种资源

2、客户端和服务器之间,传递这种资源的某种表现层

3、客户端通过四个http动词,对服务器资源进行操作,实现表现层状态转换

猜你喜欢

转载自www.cnblogs.com/kingshine007/p/11437263.html