2016-02-10 53 views
6

私はFlaskプロジェクトで取り組んでいます。私は、スクロール時にインデックスにコンテンツを追加したいと考えています。 ページがロードされた回数を保存するためのグローバル変数を設定します。 私のプロジェクトは次のように構成されています。最初はpython-Flaskでグローバル変数を設定する方法は?

├──run.py 
└──app 
    ├──templates 
    ├──_init_.py 
    ├──views.py 
    └──models.py 

、私は_init_.pyのグローバル変数を宣言:

global index_add_counter 

をしてPycharmはviews.pyGlobal variable 'index_add_counter' is undefined at the module level

に警告:

from app import app,db,index_add_counter 

そこにはImportError: cannot import name index_add_counter

私はまた参照しましたglobal-variable-and-python-flask しかし、私はmain()関数を持っていません。 Flaskでグローバル変数を設定する正しい方法は何ですか?

答えて

8

付:

global index_add_counter 

あなたはちょうどそれがなくindex_add_counterというグローバルを作成し、グローバルindex_add_counter変数がが他の場所でありを言うようなものだそう宣言し、定義されていません。名前が存在しないので、Pythonはその名前をインポートできないことを伝えています。だから、単にglobalキーワードを削除し、変数を初期化する必要があります。

from app import index_add_counter 

建設:

index_add_counter = 0 

今、あなたがそれをインポートすることができ

global index_add_counter 

は、モジュール内で使用されていますインタプリタに定義名ではなくモジュールのスコープ内でその名前を探すように通訳を強制するための定義:

フラスコアプリケーションにおけるグローバルデータ用
index_add_counter = 0 
def test(): 
    global index_add_counter # means: in this scope, use the global name 
    print(index_add_counter) 
3

ベタープレイスは、ここで説明されてflask.gオブジェクト、次のとおりです。gはグローバルであることを言っhttp://flask.pocoo.org/docs/0.10/api/#flask.g

+10

誤解ます。..それが唯一のビューのインスタンス上で動作します..あなたは1ページから移動した場合Gは完全に削除されます。 –

+1

gは、要求が開始される前に作成され、要求が削除された後に削除される要求を参照しています。 –

関連する問題