1. 程式人生 > >114 flask第一天 request 引數 response jinja2(模板語言) session

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")