フラスコ-1-06-スクリプト拡張

エクステンションを学習する前に、まず、自分のアイデアをいくつかの概念を導入しましたが、非常に明確ではありません、我々は説明するあまりを行うための手段を持っていません

要求コンテキストおよびアプリケーションコンテキスト

コンテキスト要求(要求コンテキスト)

  • 要求

  • セッション

アプリケーション・コンテキスト(アプリケーション・コンテキスト)

  • CURRENT_APP

  • Gは、(要求を処理し、一時記憶するためのオブジェクト、リセットすべてのリクエスト変数)

リクエストフック

フック要求は、デコレータの形で実装されフラスコ支持フックは、4つの要求次

 

  • before_first_request :最初のリクエストを処理する前に実行します。 @ app.before_first_request

 

  • before_request :各要求の前に実行します。@ app.before_request

 

  • after_request(応答):ある場合は何も処理されない例外は、各要求の後に実行し、スローされません。@ app.after_request

 

  • teardown_request(応答):でも、未処理の例外がスローされると、実行するための各要求の後に。@ app.teardown_request  注:デバッグ= Falseの生産モードの必要性は、つまり、

簡単な例:

 

#のコーディング:UTF-8。

からフラスコインポートフラスコ

のAppは、フラスコ(= __name__を


app.route(@ " /インデックス" DEFのインデックス():
     印刷" インデックスが行わ" のリターン ' インデックスページ' 


app.before_first_request @ 
DEF before_first_request_function ():
     「」「最初の要求処理の前に実行される「」」
    印刷第1の要求機能の実装前


app.before_request @ 
DEFbefore_request_function():
     「」「各要求の前に実行されている」「」
    印刷機能要求の実行前


app.after_request @ 
DEFのafter_request_function(応答):
     「」 " 各要求(関数処理ビュー)で実行された後、ビューの機能に異常が表示されないことを提供する「」「
    印刷の後にリクエスト機能が実行がを返すレスポンス


app.teardown_request @ 
DEFのteardown_request_function(レスポンス):
     」「」すべての要求(ビュー機能処理)で後彼らは=、非デバッグモードでの作業を実行してきたが、異常であるにかかわらず、ビュー関数の、偽のデバッグを実行してきました"「」
    印刷ティアダウン要求機能が実行さ" 


の場合 __name__ == ' __main__ ' 
    app.run(ホスト = ' 0.0.0.0 '

 

#の表示結果 
のPythonのPython-VirtualBoxの@(Flask_py):〜/ コード$ Pythonのhook_demo.py 
  * http://0.0.0.0:5000/上で実行されているが(Ctrlキーを押しながらCを終了するために)
最初にリクエスト機能が実行される前に、
要求機能の実行前に
インデックスが実行
要求関数実行後の
ティアダウン要求機能実行
 - [24 / Jul- / 2019年19時39分20秒] - 127.0.0.1 " / 1.1 GET /インデックスHTTP " 200であります-

 

 

フラスコスクリプト拡張スクリプト


 

インストール

ピップフラスコスクリプトをインストール

起動スクリプトマネージャを追加

#のコーディング:UTF-8 

からフラスコのインポートフラスコ
 から flask_script インポートマネージャの    #は、コマンド管理起動


アプリケーションはフラスコ(= __name__ 

オブジェクトの作成Manager管理クラス 
マネージャー= マネージャー(APP)


@ app.route(" /インデックス" DEFをインデックス():
     リターン " インデックスページ" 


IF  __name__ == ' __main__ ' #1 app.run(デバッグ=真)
    管理を通じてフラスコを開始するには、オブジェクト 
    (manager.runを)

私たちは、端末を起動する前にヘルプ情報のヘルプを表示することができます

(Flask_py)のpython @パイソン -VirtualBox:〜/コード$ Pythonのflask_scirpt_demo.py - ヘルプ 
使用:flask_scirpt_demo.py [ - ?] {シェル、そのrunserver} ... 

位置引数:
  {シェル、そのrunserver} 
    シェルは、Pythonシェルを実行します。フラスコのアプリケーションコンテキストの内部。
    runserver、すなわちapp.run()フラスコの開発サーバーを実行します

:オプションの引数
  ?このヘルプメッセージを示し--help - 終了を

我々が選択したヘルプ情報のヘルプを表示するのrunserver再び、から選ぶことができる2つのコマンドがあります見ることができるように

(Flask_py)のpython @のpython-VirtualBoxは:〜/コード$ Pythonのflask_scirpt_demo.pyののrunserver - ヘルプ 
用法:[flask_scirpt_demo.pyのrunserver? - ] [PORT -p] [-h HOST] - [ スレッド] 
                                      [ - プロセスプロセスは] 
                                      [ --passthrough-エラーは] [-d] [-D] [ - R] 
                                      [ - R]は

フラスコの開発サーバを実行すなわちapp.run()

オプションの引数:
   - ?,この--helpヘルプメッセージを表示し、終了
   -h HOST、 - ホストHOST
   -p PORT、 - ポートPORT
   -スレッド
   - プロセスプロセス
   --passthrough- エラーは
   -d、--debug(使用しないでくださいWERKZEUGデバッガを有効にするには、生産
                        コード)
   -D、--no- デバッグはWERKZEUGデバッガ無効に
   Pythonのファイル監視--reload、-rをために変更(ない 100 { CONST 
                        真、ヘルプ変化のためのPythonのファイルを監視(ない 
                        100%安全のための)生産使用"option_strings '  
                        [ ' -r ' ' --reload ' ]、' DEST '' use_reloader ' ' 必要':偽、' NARGS ':0、' 選択肢' :なし、
                         ' デフォルト':なし、' PROG '' flask_scirpt_demo.py 
                        のrunserver "'コンテナ' :<argparse._ArgumentGroup 
                        0x7f2a3e8db290でオブジェクト>、' タイプ':なし、' metavar ' 
                        なし} AFE のための生産使用)
   -R、--no-んリロードない Pythonのファイル監視のための変更を

起動して、指定されたホスト:0.0.0.0ポート:12345および127.0.0.1またはローカルIPを介してアクセス 

(Flask_py)のpython @のpython-VirtualBoxは:〜/コード$ pythonのflask_scirpt_demo.pyのrunserver -h 0.0.0.0 12345 -p 
 * http://0.0.0.0:12345/上で実行する(Ctrlキーを押しながらCを終了する)
 127.0.0.1 - - [24/7月/ 2019年午前20時00分43秒] " GET /インデックスHTTP / 1.1 " 200 - 
127.0.0.1 - - [24/7月/ 2019年午前20時00分43秒] " GET /favicon.ico HTTP / 1.1 " 404 -

 結果は:

このオプションのrunserverまた、このオプションのシェルがあります

Ipythonこれは、あなたがこのモジュールflask_script_demoインポートする必要はありませんコンパイラを入力することで、それを直接使用することができます

 

おすすめ

転載: www.cnblogs.com/Hannibal-2018/p/11240670.html