Flask中的Request、Response

Flask 中的Response

  • 一、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()
  • 三、redirect("/home")html

    • 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 特殊返回值
  • 四、send_file('文件路徑') 返回文件python

    • 打開文件並返回文件內容;自動識別文件類型,而且在瀏覽器自動加上ResponseHeaders而且加入Content-Type:文件類型,是能夠被客戶端識別的文件類型;不能識別的文件類型 好比 .exe文件 會下載處理 - -瀏覽器會下載json

      x-ms x:二進制 ; ms 微軟flask

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()
  • 五、jsonify('字符串或數據類型') 返回標準格式的Json字符串瀏覽器

    • Content-Type:application/jsoncookie

    • # 好比Flask更新了  1.1.1
      # return d  # 暫時不建議使用,兼容性
      # 直接返回dict時  本質上在執行jsonify(d)
    • API接口app

    • 序列化json字符串ide

    • 編寫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)
相關文章
相關標籤/搜索