Flashk--ビュー


記事の目次
  • 関数ビュー
  • 種類のビュー
  • 標準クラス図
  • リクエストクラスビュー
  • 戻り値タイプ
  • 関数ビュー
  • 定義
  • がurlで飾られている=>後の処理ロジックの方法は、ビュー関数
  • である.
  • ビュー関数の形式
  • 同一の関数は、単数および複数の
  • を処理する.
  • 同じ関数でGET/POSTなどを処理するための様々な方法要求
  • は、使用習慣に従って、1つのビューで1つまたは複数の論理
  • を処理することができる.
    #   127.0.0.1:5000/ware        
    #   127.0.0.1:5000/ware?id=2        
    #   post     
    @app.route('/ware', methods=['GET', 'POST'])
    def ware():
        id = request.args.get('id')
        if request.method == 'GET':     # get  
            if id is None:
                return 'all ware info'  #   ,    
            return f'ware info: {id}'   #   ,     
        elif request.method == 'POST':  # post  
            if id is None:
                return 'Ceate a ware'
    
    クラスビュー
  • メリット
  • クラス継承可能コード多重は、複数の関数を定義することができます.
    標準クラスビュー
  • 制約
  • 類はFlaask.view.View
  • から継承する必要があります.
  • dispatch_を書き換える必要があります.request方法、そうでなければNotImplementendErr
  • をエラーします.
  • as_ビュー()とは、クラスをビュー関数に変換して、nameパラメータを受信し、ビュー関数名を定義する、またはエンドポイント名を定義するという意味です.
  • はadd_しか使えません.クルクルrule登録ルーティング
  • メソッド
  • methods:サポートを定義する要求方法
  • dispatch_request:リクエスト配信
  • デコラレータ
  • from flask import Flask, url_for, redirect, request
    from flask.views import View
    
    app = Flask(__name__)
    
    
    class Ware(View):
        # methods = ['GET', 'POST']
        def dispatch_request(self):
            return '{}'.format(request.method)
    
    # Map([ ware>
    app.add_url_rule('/', view_func=Ware.as_view('ware'), methods=['POST'])
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    
  • 異なる要求は
  • を配布する.
    class Ware(View):
        methods = ['GET', 'POST']       
    
        def get(self):
            return 'get'
    
        def post(self):
            return 'post'
    
        def dispatch_request(self):
            dispatch_pattern = {
         'get': self.get, 'post': self.post}
            method = request.method.lower()
            return dispatch_pattern.get(method)()
    
    
    app.add_url_rule('/', view_func=Ware.as_view('ware'))
    
  • 種類のビューは、装飾器だけを使用して装飾を表示することができます.
    def decorater(func):
        pass
    
    class Ware(View):
        pass
    
    #     
    func = Ware.as_view('ware')
    decorater(func)
    
    app.add_url_rule('/', view_func=func)
    
    要求クラスビュー
    戻り値の種類