114 flask第一天 request 引數 response jinja2(模板語言) session
主要內容:https://www.cnblogs.com/DragonFire/p/9259999.html
1 django, flask, tornado框架的總結
a : django web
優點:大而全,ORM models ,model Form ,admin ,csrf ,session
缺點:資源浪費
b : flask web
優點:小而精,ORM:x , Form:x , admin:x,csrf:x,session:√,第三方元件 : 全
缺陷:穩定性較差
c : tornado
優點: 非同步io非阻塞, 原生websocker 缺點: 什麼都沒有
2 flask的認識:
from flask import Flask
app = Flask(__name__)
# app是Flask的例項,它接收包或者模組的名字作為引數,但一般都是傳遞__name__。
# 讓flask.helpers.get_root_path函式通過傳入這個名字確定程式的根目錄,以便獲得靜態檔案和模板檔案的目錄。
@app.route("/",methods=["GET","POST"])
def index():
return ""
app.run()
# app.run(host="0.0.0.0", port=3556, debug=True)
3 response三部曲 + send_file +jsonify
a django中的httpresponse : 直接寫成字串, return '美好的一天現在開始, 哈哈哈'
b django中的render: 在flask中的語法 return render_template("login.html")
c django中的redirect: 在flask中是一樣的 return redirect("/login")
d send_file: return send_file(1.mp4) 開啟並傳輸檔案, 也可以是圖片或者檔案
e jsonify: return jsonify({"name": " jk", "age":34}) content_type:application/json
4 flask中的request變數: from flask import Flask, request
@app.route("/login", methods=("GET", "POST")) def login(): if request.method == "GET": return render_template("login.html") if request.method == 'POST': print("this is post") # 拿到的是form表單提交的資料. 通過to_dict()方法可以獲取一個字典 print(request.form.to_dict()) # 當content-type無法被解析時, 存放原始的資料 print(request.data) # 獲取的是ajax傳輸的data裡的資料 print(request.json) # 當前訪問的url print(request.url) # 接收的是get上的引數 print(request.args) img_obj = request.files.get('filename') # 將圖片儲存在本地 img_obj.save(img_obj.filename) print(request.values) # 列印主機地址 print(request.host) # 將主機地址轉換成httpurl print(request.host_url) login_info = request.form.to_dict() if login_info.get("username") == 'alex' and login_info.get("password") == "123": tag = Markup('<h1>this is the h1 tag</h1>') return render_template("index2.html", stu=STUDENT_DICT, tag=tag) return "使用者名稱或者密碼錯誤"
5 jinja2 : safe Makeup @app.template_global() @app.template_global() 兩個裝飾器, include標籤 block程式碼塊
詳解: https://www.cnblogs.com/DragonFire/p/9259999.html
6 session: from flask import session
from flask import session app.secret_key = "yinjiaodawangba" Flask中的session是儲存在 cookie 中的 session["user"] = "jwb" session.get("user")