一. 四种web框架比较
Django : 优点 - 大而全所有组件都是有组织内部开发高度定制化 教科书级别的框架 缺点 - 大到浪费资源,请求的时候需要的资源较高 Flask ; 优势 - 小而精,组件只有Session,第三方机构强烈支持Flask,非常多的三方组件 简单至极 缺陷 - 由于三方组件的关系 稳定性相对较差 Flask-Session Tornado : 优势 - 异步IO 非阻塞 原生WebSocket 缺陷 - 组件 == 0 关于异步的不好理解 Debug难上加难 Sanic : 优势 - 异步IO 非阻塞 原生WebSocket + 小而精,组件只有Session,第三方机构强烈支持Flask,非常多的三方组件 缺陷 - 复杂度
扩展知识:
QPS = 请求每秒钟的次数 QPS == 10
时间片 cpu 工作一次的时间单位
py 假线程 - 1个核心
真线程 - 4个核心 - 四个线程
二.Flask 的启动
1.三行启动 flask
from flask import Flask app = Flask(__name__) app.run()
2.六行启动 Flask "hello"
from flask import Flask app = Flask(__name__) @app.route("/") def index(): return "hello" app.run()
三.Flask 的响应
①return "hello" 直接返回字符串
②return render_template("login.html")
返回 .html文件
③return redircet("/login")
重定向,返回路径
④ return send_file("文件路径")
打开并返回文件内容,并在响应头中加入
content-Type:文件格式和 content-Length:文件大小(bytes)
⑤ return jsonify({k:v})
返回一个客户端可以识别的 json 格式字符串,并在响应头
中加入 content-Type: application/json
四.Flask 的请求
需要引入模块:(request是一个公共变量) from flask import request
① request.args 获取url 中的数据
② request.form 获取 FormData 中的数据
print(request.form.to_dict()) 以字典形式 获取所有
③ request.values 获取 args+form 数据(不常用)
④ request.data (数据流) 请求体中放入原始数据
⑤ request.json (字典) 获取请求头中带有
content-type:application/json 将请求体中的数据反序列化到 json中
但在 data 中依然存储原始数据bytes
⑥ request.files 获取FormData 中的文件数据
request.files.get('my_file')
request.files.save(默认提交的文件名)
⑦ request.method 获取请求方式
五. template 调为 jinja2 模式
1.常用方法
jinja2的常用语法
{{ }} 引用 执行函数
{% %} 逻辑代码
字典的三种调用方式:
2.扩展
① 调用函数
在 .py 文件中
在 .html 文件中调用
显示结果为:
7
② 添加全局
在.py 文件中
在.html 中调用
结果为
7
③ macro (相当于 函数def)
六. Flask 中的session
① 需要调用
from flask import session
②加密
app.secret_key = "序列化Session需要的字符串儿"