python flask-01

from flask import Flask

# 1.創建web應用
from flask import make_response
from flask import redirect
from flask import request
from flask import url_for
from werkzeug.datastructures import FileStorage

app = Flask(__name__)


# 路由: 讓視圖函數綁定對應的URL, 當訪問URL時, 會調用該視圖函數
@app.route("/")
def index():
    return "hello flask"


# methods參數用於設置支持的請求方式
@app.route('/index1', methods=['GET', 'POST'])  # 路由必須以路徑分隔符 / 開頭
def index1():
    return "index1"


@app.route('/index2', methods=['GET', 'POST'])
def index2():
    # url 這次請求的請求方式 請求報文
    print(request.url)
    print(request.method)
    print(request.headers)
    print(request.headers["Host"])
    print(request.headers.get("Host1"))  # 鍵不存在, 不會報錯

    # 獲取查詢字符串 一般用於GET傳遞數據 類字典對象
    print(request.args.get("name"))

    # 獲取POST的鍵值對數據 類字典對象
    print(request.form.get("name"))

    # 獲取POST發送的文件
    file = request.files.get("1")  # type: FileStorage
    # 保存文件到本地
    file.save("1.jpg")

    # 獲取純文本內容
    data = request.data
    print(data, 1111)
    data_str = data.decode("utf-8")
    print(data_str, 2222)
    return "index2"


# 自定義響應對象
@app.route('/index3')
def index3():
    # 手動創建響應對象 場景:需要自定義響應報文
    response = make_response("index3")
    print(response.headers)
    return response
    pass


# 自定義狀態碼
@app.route('/index4')
def index4():
    # 設置第二個返回值 可以用於自定義狀態碼 作用:方便開發人員快速排錯
    return "index4", 700


# 重定向:跳轉到另一個網絡位置 比如 頁面跳轉
@app.route('/index5')
def index5():
    # 獲取視圖函數的url
    url1 = url_for("index")
    print(url1)

    return redirect(url1)


# 漫畫詳情頁面
@app.route('/index6')
def index6():
    # 取出請求頭中的cookie數據
    is_help = request.cookies.get("is_help")
    # 判斷是否顯示過幫助信息
    if is_help:
        return "直接顯示漫畫詳情"
    response = make_response("先顯示幫助信息,再顯示漫畫詳情")
    response.set_cookie("is_help", "1", max_age=60 * 60 * 24)
    return response


if __name__ == '__main__':
    # 記錄了所有的路由規則(url 支持的請求方式  對應的視圖函數名)
    print(app.url_map)
    # 萬能ip 0.0.0.0  外網/局域網請求都可以監聽
    # debug=True 是否開啓調試模式  1> 可以在頁面上顯示python錯誤  2> 更新代碼時, 自動重啓服務器

    # 2.運行應用(啓動flask內置的測試服務器, 並且將請求轉發給web應用)
    app.run(host="0.0.0.0", port=8000, debug=True)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章