<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 12-13 視圖函數Response返回值詳解 ## 關于響應 視圖函數的返回值會被自動轉換一個響應對象,flask的轉換邏輯如下: * 如果返回的是一個合法的響應對象,則直接返回 * 如果返回的是一個字符串,那么flask會重新創建一個werkzeug.wrappers.Response對象,Response將給字符串作為主體,狀態碼是200,MIME類型為text/html,然后返回該Response對象 * 如果返回的是一個元組,元組中的數據類型是\(response.status.headers\)。status值會覆蓋默認的200狀態碼,headers可以是一個列表或者字典,作為額外的消息頭 * 如果以上條件都不滿足,Flask會假設返回值是一個合法的wsgi應用程序 ### 自定義響應 自定義響應必須滿足三個條件: * 必須繼承自Response類 * 必須實現類方法force\_type\(cls,rv,environ=None\) * 必須制定app.response\_clss為自定義的Response ## Reponse ### 視圖函數中可以返回那些值 1. 可以返回字符串:返回的字符串其實是底層將這個字符串包裝成了一個'Response'對象 2. 可以返回元組:元組的形式是\(響應體,狀態碼,頭部信息,返回的元組在底層包裝成了一個'Response'對象\) 3. 可以返回'Reponse'及其子類 ### 實現一個自定義的Reponse對象: 1. 繼承'Response'類 2. 實現方法'force\_type\(cls,rv,envison=None\)' 3. 指定'app.response\_class'為自定義的'Response'對象 4. 如果視圖返回的數據,不是字符串,也不是元組,也不是Response,那么就會將返回值傳給'force\_type',然后'force\_type'的返回值返回給前端 ```text from flask import Flask, Response, jsonify # from werkzeug.wrappers import Response # flask = werkzeug + sqlalchemy + jinja2 app = Flask(__name__) # 將視圖函數中返回的字典,轉換成json對象,然后返回 class JSONResponse(Response): @classmethod def force_type(cls, response, environ=None): """ 這個方法只有視圖函數返回非字符,非元組,非Response對象才會調用 :param response: :param environ: :return: response,視圖函數的返回值 """ print(response) if isinstance(response,dict): # 轉換 response = jsonify(response) return super(JSONResponse,cls).force_type(response,environ) # 添加response類,一定要添加 app.response_class = JSONResponse @app.route('/') def hello_world(): # return 'Hello World!' return Response('Hello World',status=200,mimetype='text/html') # 設置cookie @app.route('/list1/') def list1(): # return {"username":"miku"} # return ['a','b'] # 以上數據不接回調,會報錯 resp = Response("list1") resp.set_cookie("miku","angle") return resp # 添加響應頭 @app.route('/list2/') def list2(): return "list2",200,{"X-NAME":"MIKU","Server":"windows2003"} # json,非字符,非元組 @app.route('/list3/') def list3(): return {"username":"miku","age":16} if __name__ == '__main__': app.run(debug=True) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看