2013-07-02 9 views
5

それは常に存在したとbase.htmlFlask:GoogleアナリティクスJSが開発環境で動作しないようにするにはどうすればよいですか?

問題に挿入する必要があるのjsスクリプトの作品があるグーグル・アナリティクスにサインアップすると、その開発マシンが本物ではない不要なデータを提出しますユーザー。フラスコがデバッグモードになっているかどうか尋ねる方法があるかどうか疑問に思っていたので、最初にこのスクリプトを読み込まないでください。

テンプレートのデバッグモードを確認するにはどうすればよいですか?

答えて

6

をこのような何かを行うことによって、あなたのフラスコアプリにロードし、その後config.pyと呼ばれる:

import config 
app = flask.Flask(__name__) 
app.config.from_object(config) 

そして、あなたが書くことができますconfig.pyファイルに:

# Running on App Enginge 
PRODUCTION = os.environ.get('SERVER_SOFTWARE', '').startswith('Google App Engine') 
# Running Localy 
DEVELOPMENT = not PRODUCTION 
# You decide when is DEBUG mode, usually when running locally 
DEBUG = DEVELOPMENT 

そして、あなたのテンプレートで、あなたはこのように、これらの値を使用することができます

{% if not config.DEBUG %} 
    <script> 
    ... 
    </script> 
{% endif %} 

アナリティクスに影響するようにアプリケーションの管理者ユーザーを除外することもできます。これらのユーザーは、とにかく悪用される可能性が最も高いからです。とりわけ

{% if not current_user.admin and not config.DEBUG %} 
    <script> 
    ... 
    </script> 
{% endif %} 

、上記の全て(config.pymain.pyanalytics.html)上記の私gae-initのプロジェクトで使用されている:あなたが道そしてcurrent_userフラスコを実装した場合、あなたのテンプレートは変更になる必要があります。

0

私はFlaskサイトと同様のケースがあります。ユーザーのアクティビティをログに記録したいが、自分のアクティビティが管理者としてアナリティクスに行き、統計情報を歪めることは望ましくない。

私は私のbefore_requestハンドラにg.is_adminを追加しました:ご使用の環境が設定されている方法に応じて

{% if not g.admin %} 
    <script> ... </script> 
{% endif %} 

:条件を使用した場合、適切な

@app.before_request 
def before_request(): 
    g.admin = current_user.is_admin() 

次にテンプレートで、私はAnalyticsのコードをスキップ開発マシンとプロダクションマシンを区別できる条件を考え出す必要があります。これは、設定項目と同じくらい単純なものでも、デバッグモードがオンであるかをチェックすることもできます。

+0

通常のユーザーをテストするか、アナリティクスに何も送信しないでローカルにユーザーにログオンしないと、これはまだ実際にはOKではありません。 – Lipis

+0

私が上記のように、正しい条件を見つける必要があります生産機械から離れた開発機械。私にとっては、管理者ではなく管理者であったからです。マシンのホスト名、IPアドレス、開発マシンを一意に識別する名前を調べることができます。 – Miguel

+0

私の悪い..全体の答えを読むにはあまりにも怠惰だった..:/ – Lipis

0

私はこれをテストしていませんが、私はテンプレートが設定オブジェクトにアクセスできると思います。だからあなたのような何か試すことができます:あなたはすでにそれを使用していない場合は、一つのファイルを作成する必要があり

{% if not config['DEBUG'] %} 
    <script> .... </script> 
{% endif %} 
関連する問題