一. Python 现阶段三大主流Web框架 Django Tornado Flask 对比
1.Django 主要特色是大而全,集成了不少组件,例如: Models Admin Form 等等, 无论你用获得用不到,反正它全都有,属于全能型框架html
2.Tornado 主要特色是原生异步非阻塞,在IO密集型应用和多任务处理上占据绝对性的优点,属于专一型框架web
3.Flask 主要特色小而轻,原生组件几乎为0, 三方提供的组件请参考Django 很是全面,属于短小精悍型框架django
Django 一般用于大型Web应用因为内置组件足够强大因此使用Django开发能够一鼓作气json
Tornado 一般用于API后端应用,游戏服务后台,其内部实现的异步非阻塞真是稳得一批flask
Flask 一般应用于小型应用和快速构建应用,其强大的三方库,足以支撑一个大型的Web应用后端
Django 优势是大而全,缺点也就暴露出来了,这么多的资源一次性所有加载,确定会形成一部分的资源浪费浏览器
Tornado 优势是异步,缺点是干净,连个Session都不支持app
Flask 优势是精悍简单,缺点是稳定性差(由于是使用大量的第三方库,因此当Flask更新的时候,库也要更新,可是库不是Flask公司的,因此会有不兼容的现象.)框架
二 . 初识Flask
1 . 安装Flask 异步
pip install Flask
2 . 六行代码写出一个页面
from flask import Flask # 导入Flask类 app = Flask(__name__) # 实例化Flask对象app @app.route("/") # app中的route装饰器 def index(): # 视图函数 return "hello world" app.run() # 启动Flask web服务
启动项目,控制台以下 :
使用浏览器访问上面的地址,效果以下图 :
至此,你已经实现了flask的第一个程序 !
3 . Flask中的Response "三剑客"
咱们知道 Django中的response有3中形式 ( HttpResponse, redirect, render ), 对比Django,来看看Flask有哪些返回形式.
1) . 返回 HttpRespomse 对象
@app.route("/home") def home(): return "hello world" # 至关于django中return HttpResponse("")
2) . 重定向 ( redirect )
from flask import redirect # 导入flask中的redirect @app.route("/home") def home(): return redirect("/login") # 重定向至"/login"路径
当访问"/home"这个路径的时候,视图函数home会重定向到路径"/login" 并会触发"/login"对应的视图函数。
3)返回模板页面(render_template)
from flask import render_template # 导入flask中的render_template @app.route("/home") def home(): return render_template("home.html") # 渲染模板home.html并返回
Flask中的render_template至关于django中的render
注意:若是要使用render_template 返回渲染的模板,请在项目的主目录中加入一个目录 templates,以下图:
不然会遇到jinja2的异常:
4 . flask的 "小儿子"
1) . 返回标准的json字符串
from flask importjsonify @app.route("/json") def jsons(): d = {"name":"jinjiaodawangba"} return jsonify(d)
返回json字符串,而且会在响应头中加Content-Type:application/json,即告诉浏览器数据是json字符串,浏览器收到后会自动进行反系列化,而使用json.dumps()则不会加响应头。