Django
Model ORM Session
ModelForm
amdin
大而全
浪费资源
Flask
Session
小而精,三方组件全
稳定性相对较差
Tornado
异步IO 非阻塞 原生websocket
干净
Sanic HOT
from flask import Flask
app = Flask(name)
app.run()
from flask import Flask
app = Flask(name)
@app.route("/")
def index():
return "Hello World"
app.run()
Response三剑客:
HttpResponse: return "Hello World" 返回字符串至客户端
from flask import render_template
render : return render_template("login.html")
与Django中的 render 使用一致 返回模板由浏览器渲染
from flask import redirect
redirect: return redirect("/login") # 302
跳转,重定向URL
Flask中小儿子:
1.from flask import jsonify
retrun jsonify({name:111}) # 返回json标准的字符串
Content-Type:application/json
2.from flask import send_file
return send_file(path)
打开文件并返回文件内容(自动识别文件格式)
falsk 中的 request
get post delete put
django
def django(req):
return HttpResponse("hello")
from flask import request
request.method # 请求方式
request.form # 存放FormData中的数据 to_dict 序列化成字典
request.args # 获取URL中的数据 to_dict 序列化成字典
request.url # 访问的完整路径
request.path # 路由地址
request.host # 主机地址
request.values # 获取 FormData and URL中的数据 不要用to_dict
request.json # 如果提交时请求头中的Content-Type:application/json 字典操作
request.data # 如果提交时请求头中的Content-Type 无法被识别 将请求体中的原始数据存放 byte
request.cookies # 获取Cookie中的数据
request.headers # 获取请求头
request.files # 序列化文件存储 save()
Jinja2
{{}} 引用变量 执行函数
{%%} 逻辑代码
|safe Markup 安全标签字符串
@app.template_global()
@app.template_filter()
{% macro create_input(na,ty) %}
{{ na }} :
{% endmacro %}
{{ create_input("username","text") }}
Flask 中的 Session
app.secret_key = "加密字符串" # 用于序列化和反序列化 session信息
由于Flask中默认Session 存放位置 - 客户端的Cookies中
所以Session需要加密 用到 secret_key
请求进入视图函数 带上cookie 将Session从cookie序列化出来 通过secret_key 反序列化成字典
Flask-Session
今日作业:
基于Session装饰器,装饰至少2个视图函数