フラスコノート:コンテキスト

ローカル孤立スレッドスレッド:

スレッドのアイソレーション特性を持つオブジェクトは、「ローカルスレッド」と呼ばれることができれば、それはスレッドスペーサオブジェクト異なるスレッドが独立していることを意味する、オブジェクトの操作にスレッド他のスレッドには影響しませんこのようなスレッドのオブジェクトAのプロパティの値を変更するなど、オブジェクト操作が、オブジェクトのプロパティ値が変更されず、スレッドB.

 

フラスコスレッド隔離されたオブジェクト:

フラスコに、スレッド単離されたオブジェクトは、これらのオブジェクトは、実行時にこれらのオブジェクトを使用して、同時に異なる場所での問題を心配することなく、直接プロジェクトで使用インポートすることができ、要求、セッション、G、CURRENT_APPが挙げられます。例えば、異なる複数の要求は、オブジェクトを要求するために使用される、入って来たが、要求がスレッドを単離し、そして各スレッドはそれ自身の要求を持っているので、要求データは、それぞれのスレッドを使用してオブジェクト。

 

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

アプリケーション・コンテキストと要求コンテキストは、それ自体のコンテキストを有し、コンテキストオブジェクトLocalStackスタックオブジェクトは、機能の観点から動作の文脈で使用される場合(CURRENT_APPオブジェクト、なurl_for機能、等の)、それは自動的にコンテキストオブジェクトに対応するコンテキストを作成し、対応するLocalStackをプッシュします操作のコンテキストは、自動的にトップスタックLocalStackコンテキストオブジェクトを取得するために、スタックの最上位。したがって、機能の観点から直接コンテキストを使用して動作させることができます。

あなたは機能の面で操作のコンテキスト外で使用したい場合は、手動で対応するコンテキストオブジェクトを作成し、対応するLocalStackスタックにそれをプッシュする必要があります。次のように単純な例のコードです。

手動でアプリケーション・コンテキストを作成します。

フラスコインポートフラスコ、CURRENT_APPの

アプリ =フラスコ(__name__ 

最初の方法:スタックコンテキストオブジェクトで直接ファイルを作成し、LocalStackにプッシュ 
app_context = app.app_context()
app_context.push() 
は、現在のアプリケーションの情報を取得します。 CURRENT_APP操作オブジェクトは、アプリケーション・コンテキスト・オブジェクトに属する
印刷(CURRENT_APP) 


第二の方法:ブロックとアプリケーション・コンテキストを使用して、この方法はブロックのみを使用したアプリケーションのコンテキストで動作して外側にではないであろうこのあなたはコンテキストを作成した後に自動的にスタックするLocalStack方法オブジェクトプッシュする
app.app_contextとを():
     印刷(CURRENT_APP)

 

手動で要求コンテキストを作成します。

フラスコインポートフラスコ、なurl_for 

のAppは、フラスコ(= __name__ 


@ app.route(/詳細/ DEFの:詳細()
     の戻り の詳細情報!


トップへアプリケーションLocalStackアプリケーションコンテキストスタックをチェックしますが、何のコンテキストオブジェクトがあれば、ありませんがいいえ、それは自動的にアプリケーションのコンテキストコンテキストオブジェクトを作成し、アプリケーションLocalStackのにスタックのトップをプッシュします
。#あなたが要求コンテキストオブジェクトを作成する前にしてLocalStack要求するために、スタックの最上部を押すアゲインを、この方法では唯一のブロックとすることができ外部と、要求コンテキストを使用して操作ができないでしょう
app.test_request_context()で:
     なurl_for反転表示取得した操作要求コンテキストURL属する
    印刷(なurl_for(詳細))

 

Gオブジェクト:

(グローバル略称として見ることができる)Gを使用するオブジェクト「フラスコインポートGから」使用、Gは、グローバルデータを格納するために使用される対象物であり、gはスレッドスペーサの目的です。通常、私たちは頻繁にフラスコプログラム全体で使用する必要があるいくつかのカスタムデータが、あなたは、グラムオブジェクトを取得するのに必要な時間をグラムオブジェクトを置くことができます。その後、ファイルに良い `g.username =「xiaoming'`の定義、および、別のファイルにg.username` to`直接使用することができます。

 

おすすめ

転載: www.cnblogs.com/guyuyun/p/11280041.html