Flask之初識
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