flask初识
一、Flask、Tornado与Django的相互比较
Flask:
优点:小而精,短小精悍;第三方组件特别多
缺点:组件更新速度取决于开源者
应用:用于小型应用和快速构建应用,其强大的三方库,足以支撑一个大型的Web应用
Tornado:
优点:有原生的websocket;异步任务;IO非阻塞;在IO密集型应用和多任务处理上占据绝对性的优势,属于专注型框架
缺点:组件没有,session都没有,还好支持jinja2
应用:用于API后端应用,游戏服务后台,其内部实现的异步非阻塞真是稳得一批
Django:
优点:大而全,组件非常全
缺点:太大,加载大,浪费资源
应用:用于大型Web应用由于内置组件足够强大所以使用Django开发可以一气呵成
二、Flask安装:
pip3 install flask
三、开启flask项目:
from flask import Flask, render_template, redirect # Flask类是WSGI应用程序 # 创建Flask实例,第一个参数是应用模块的名字或者包名,单一模块可以用__name__ ap1 = Flask("app") # 开启调试模式的方法一 # ap1.config["DEBUG"] = True # route()装饰器把一个函数绑定到对应的 URL 上。 #methods允许的请求方式 @ap1.route('/login/', methods=["GET","POST"]) def login(): if request.method == "GET": # 放静态文件的文件包名必须是templates return render_template("login.html") else: # 不能return数字 return redirect("/index") @ap1.route("/") def root_path(): return redirect("/login") if __name__ == "__main__": # 开启调试模式的方法二 ap1.run(host="127.0.0.1", port=9527, debug=True)
四、与Django对应着看Flask里的三剑客
1.Flask的HttpResponse
@ap1.route("/index/") def index(): return “hello world”
在Flask 中的HttpResponse 在我们看来其实就是直接返回字符串
2.Flask的Redirect
from flask import redirect @ap1.route('/login/', methods=["GET", "POST"]) def login(): if request.method == "POST": # 不能return数字 return redirect("/index") return “bala…bala”
每当访问"/login"这个地址的时候,视图函数login会触发redirect("/index") 跳转到url地址: "/" 并会触发"/"对应的视图函数index()
3. Flask 中的 render (render_template)
from flask import render_template @ap1.route("/index") def index(): return render_template("index.html")
HTML模板渲染是每个Web框架中都必须有的。注意: 如果要使用 render_template 返回渲染的模板,请在项目的主目录中加入一个目录 templates,不能错,否则会报jinja2的错误