Flask初识
1.和几种框架的对比
Django :
优点:大 组件全 session models
缺点:所有资源全部加载,造成资源上一定的浪费
Flask :
优点:小 短小精悍 session 三方组件多太多了
缺点:稳定性相对而言较差
Tornado:
优点 :异步 IO 非阻塞 原生Websocket
2.由于之前已经学习过Django,所以Flask可基于Django框架学习
2.1 安装 pip install flask
2.2 启动flask:
from flask import Flask
app = Flask(__name__)
app.run("0.0.0.0",5000,debug=True)
2.3 flask的路由
@app.route("/home",methods=["GET","POST"])
2.4 Response三剑客 + 小儿子:
return "hello s13 students" # Django HttpResponse 返回字符串
return render_template("index.html") # 返回模板
return redirect("/index") # 重定向跳转
小儿子
return send_file("2.mp3") # 打开文件并返回客户端
return jsonify({"name":"yinwangba"}) # 返回标准的json格式字符串 content-type: application/json
2.5 Request:
# print(request.form) # form 存放form表单中的序列化数据
# print(request.args) # args 存放URL中的序列化数据
# print(request.values) # values 存放URL和form表单中的序列化数据
# print(request.method) # method 存放请求方式
# print(request.path) # path 路由地址
# print(request.url) # url 请求全部地址 http://127.0.0.1:5000/home?id=jwb&username=ywb
# print(request.host) # host 主机位 127.0.0.1:5000
# print(request.host_url) # host_url 将主机位转成url http://127.0.0.1:5000/
# print(request.data) # data 当请求头content-type无法被识别时
# print(request.json) # json 当请求头content-type:application/json
# print(request.headers) # headers 查看请求头
# print(request.files.get("file")) # files 获取文件对象
# file = request.files.get("file")
# file.save(file.filename)
2.6 Jinja2:
a.模板
{{}} 引用变量 非逻辑代码时使用
{%%} 逻辑代码使用
b.返回安全字符
| safe
Markup : from flask import Markup 后台返回安全标签字符串
c.模板继承
{% block jj2 %}
{% include "login.html" %}
d.宏的概念
{% macro func(name,type_name) %}
<input type="{{ type_name }}" name="{{ name }}">
<input type="submit" value="提交文件">
{% endmacro %}
{{ func("file","file") }}
2.7 Flask中的Session组件:
from flask import session
app.secret_key = "OldBoyEdu.com"
session被序列化后存放在 浏览器的cookie中
2.8 特殊装饰器:
@app.template_global()
def a_and_b(a,b):
return a+b
@app.template_filter()
def abc(a,b,c):
return a+b+c