Flask 中的Response
- 1、return "helloword"
from flask import Flask
# 實例化Flask對象 app
app = Flask(__name__)
@app.route('/index')
# 視圖函數
def index():
return 'helloword'
- 2 render_template("html文件")
from flask import Flask
from flask import render_template
@app.route('/home')
def home():
# 模板存放路徑
# 創建 templates文件夾;右鍵文件夾 ---》Mark Directory as --->templates ---jinja2
return render_template('home.html')
# 啟動服務
app.run()
-
3、redirect("/home")
- ResponseHeaders 中加入了一個 Location:http://url # 實現重定向
- 302 http status
- 4xx 錯誤 客戶端
- 5xx 錯誤 服務端
from flask import Flask,render_template,redirect # 實例化Flask對象 app app = Flask(__name__) # app中的route裝飾器 路由 @app.route('/index') # 視圖函數 def index(): return 'helloword' @app.route('/home') def home(): # 模板存放路徑 return render_template('home.html') @app.route("/re") def re(): # 重定向 return redirect("/home") # 啟動服務 app.run()
Flask 特殊返回值
-
4、send_file('文件路徑') 返回文件
-
打開文件並返回文件內容;自動識別文件類型,並且在瀏覽器自動加上ResponseHeaders並且加入Content-Type:文件類型,是可以被客戶端識別的文件類型;不能識別的文件類型 比如 .exe文件 會下載處理 - -瀏覽器會下載
x-ms x:二進制 ; ms 微軟
-
from flask import Flask, send_file
@app.route('/get_file')
def get_file():
# 返回helloword.py里的內容 Content-Type: text/plain; charset=utf-8
return send_file('helloword.py')
# 返回圖片 Content-Type: image/jpeg
return send_file('1.jpg')
# 返回MP4 或 MP3 Content-Type: voide/mp4
return send_file('2.mp4')
# 下載 這個exe文件 Content-Type: application/x-msdownload
return send_file('3.exe')
# 啟動服務
app.run()
-
5、jsonify('字符串或數據類型') 返回標准格式的Json字符串
-
Content-Type:application/json
-
# 比如Flask更新了 1.1.1 # return d # 暫時不建議使用,兼容性 # 直接返回dict時 本質上在執行jsonify(d)
-
API接口
-
序列化json字符串
-
編寫ResponseHeaders 加入Conent-Type:application/json
-
from flask import Flask, jsonify
# 實例化Flask對象 app
app = Flask(__name__)
@app.route('/get_json')
def get_json():
dic = {
"name": "anwen"
}
# Content-Type:application/json
return jsonify(d)
# 比如Flask更新了 1.1.1
# return dic # 暫時不建議使用,兼容性;直接返回dic時 本質上在執行jsonify(d)
# 啟動服務
app.run()
Flask 中的request
# -*- coding: utf-8 -*-
# @Time : 2019/9/24 11:07
# @Author : AnWen
import os
from flask import Flask, render_template, request, redirect
app = Flask(__name__)
app.debug = True
# 報錯 405 Method Not Allowed
# methods=['GET', 'POST'] 添加路由的裝飾器允許請求方式,覆蓋
@app.route('/login', methods=['GET', 'POST'])
def login():
# request.method 獲取請求方式
if request.method == 'GET':
# 在Django request.GET 取出 URL 中的參數
# 在Flask 獲取URL 中的參數
# print(request.url) # 請求地址 http://127.0.0.1:9999/login?id=wen
# print(request.url_charset) # URL 編碼方式 utf-8
# print(request.url_root) # 請求地址 完整請求地址 host http://127.0.0.1:9999/
# print(request.url_rule) # 請求路由地址 /login
# print(request.values.to_dict()) # 接收所有(GET,POST)請求中的數據,包含了 URL 和 FormData 中的數據 {'id': 'wen'}
# print(request.args.get("id")) # 獲取URL中的數據 字符串 wen
return render_template('login.html')
if request.method == 'POST':
# request.form獲取 FormData中的數據
# print(request.form) # ImmutableMultiDict([('username', '123')])
# print(request.form.get('username')) # 123
# print(request.form.to_dict()) # {'username': '123'}
# request.files 所有文件類型全部放在這里 包括二進制 音頻視頻
# print(request.files.get("myfile")) # 文件對象<FileStorage: 'Flask day01.md' ('application/octet-stream')>
# my_file = request.files.get('myfile')
# # my_file.save('bf.jpg') # 當前目錄下會保存一個bf.jpg
# new_file = os.path.join('img',my_file.filename)
# my_file.save(new_file) # 保存原文件到文件夾中
# 獲取其他數據
# request.headers
# request.cookies
# request.path == request.url_rule
# request.host == "127.0.0.1:9527"
# request.host_url == "http://127.0.0.1:9527/"
# 特殊提交方式數據獲取
# Content-Type:application/json
# request.json 獲取Content-Type:application/json時提交的數據
# Content-Type 無法被識別 或 不包含Form字眼
# request.data 獲取 原始請求體中的數據 b""
return '200 ok'
# return redirect('/')
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run("0.0.0.0", 9999)