クラスビューflask-
- 標準クラスビュー
-
1 からフラスコインポートjsonifyフラスコrender_template、ビュー、 2 3アプリ=フラスコ(__name__ ) 4 5 6 クラスJsonView(views.View): 図7は、 DEF :(自己)GET_RESPONSE 8 上げNotImplementedError() 9 10 DEF dispatch_request(自己)。 11 応答= self.get_response() 12 戻りjsonify(レスポンス) 13 14 15 クラスIndexView(JsonView): 16 デフGET_RESPONSE(自己): 17 コンテキスト= { 18 ' ユーザ名':' アイビー' 19 } 20 リターンコンテキスト 21 22 23 app.add_url_rule(' / '、view_func = IndexView.as_view(' インデックス' )) 24 25 26 クラスFakeView(オブジェクト): 27 DEF __init__ (自己): 28 スーパー()。__init__ () 29 self.context = { 30 ' のユーザ名':' アイビー' 31 } 32 33 34 クラスTestViewに(JsonView、FakeView): 35 DEF GET_RESPONSE(自己): 36 self.context.update({ ' 年齢':23 }) 37 リターンself.context 38 39 40アプリケーション.add_url_rule(' /試験'、view_func = TestView.as_view(' テスト' )) 41 42 なら__name__ == ' __main__ ' : 43 app.run()
View.View標準クラスがビューから継承最後に使用add_url_ruleアプリケーションにルーティングするdispatch_request方法をフラスコカスタム実装する必要があり、最初のパラメータは、展開図に対応する経路view_func、その経路に対応する図であり、クラスを使用してビュークラスビュー機能に対応するas_viewビューの方法。
- クラスビューは抽象ビューを使用して達成することができますが、聞かせてサブクラスは、カスタム実装はいくつかの共通の属性のルールが取得するために多重継承の方法を使用することができ返し表示します。
-
- クラスベースのスケジューリングビュー
-
1 からフラスコインポートフラスコrender_template、ビューは、jsonify 2 3アプリ=フラスコ(__name__ ) 4 5 6 クラスLoginView(views.MethodView): 7 DEF (自己)を得る: 8 リターン ' う[ 9 10 デフ後(自己)。 11 リターン ' 後' 12 13 14 app.add_url_rule(' /ログイン'、view_func = LoginView.as_view(' ログイン' )) 15 16 もし __name__ == ' __main__ ' : 17 app.run()
MethodViewは、Viewクラスのジャンゴと同じように、自分のリクエストメソッドに基づいて、クラスメソッド関数定義ビューから呼び出すことができます
-
- クラスビューデコレーター
-
1 からフラスコインポートフラスコ、ビューは、要求 2 から functools インポートラップ 3 4アプリ=フラスコ(__name__ ) 5 6 7 DEF login_required(FUNC): 8 @wraps(FUNC) 9 デフラッパー(*引数、** kwargsから): 10 #模拟登陆验证 11 名= request.args.get(' 名前' ) 12 もし名前: 13 リターン FUNC(* argsを、** kwargsから) 14 リターン ' 未登录' 15 16 戻りラッパー 17 18 19 app.route @(' / ' ) 20 @login_required 21 デフインデックス(): 22 リターン ' インデックスページ' 23 24 25 クラスIndexView(views.View): 26 デコレータの= [ login_required] 27 28 DEF dispatch_request(自己): 29 リターン ' インデックスページビュー' 30 31 32 app.add_url_rule(' /インデックス'、view_func = IndexView.as_view(' index_view ' )) 33 34 なら __name__ == ' __main__ ' : 35 app.run()
クラスビュー機能とデコレータはデコレータを受け付ける機能本体のリストであり、クラス属性のデコレータを直接使用するデコレータの同じビューを使用したいです
-