2013-07-02 35 views
5

hep, o gelişme makineleri gerçek uzak değildir gereksiz verileri orada sunacağını edilir sahip base.htmlFlask: Google Analytics JS'nin dev bir ortamda çalışmasını nasıl önleyebilirim? google analytics ile kayıt olurken

Problem takılı gereken js senaryonun bir parçası olduğunu kullanıcılar. Şişenin hata ayıklama modunda olup olmadığını sormanın bir yolu olup olmadığını merak ediyordum ve bu nedenle bu senaryoyu ilk sırada yüklemiyorlar.

Şablonda hata ayıklama modunu nasıl kontrol edebilirim?

cevap

6

böyle bir şey yaparak, zaten sizin Matara app içine yüklemek sonra config.py denilen bir dosya oluşturmak ve gereken onu kullanmıyorsanız: Yani böyle bir şey deneyebilirsiniz

# 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 

Ve sonra şablonda böyle bu değerleri kullanabilirsiniz:: sonra config.py dosyada yazabilir

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

Ayrıca, uygulamalarınızın yönetici kullanıcılarını, büyük olasılıkla kötüye kullanacakları için, analizleri etkilemek amacıyla hariç tutabilirsiniz. Diğer şeylerin yanı sıra

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

Yukarıdakilerin hepsi (config.py, main.py, analytics.html) Yukarıdaki benim gae-init projede kullanılmıştır: Eğer yolu sonra current_user Flask uygulanan Eğer şablon değişikliği olmalıdır.

0

Flask sitemde de benzer bir durum var. Kullanıcılarım için etkinliği günlüğe kaydetmek istiyorum, ancak Analytics'e gitmek ve istatistikleri çarpmak için kendi etkinliğimi yönetici olarak istemiyorum.

Eklediğim bir g.is_admin benim before_request işleyicisi için: kullanırken uygun

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

Sonra şablonda ben Analytics kodunu atlamak koşullu: Ortamınız ayarlanma şekline bağlı olarak

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

Yukarıya, üretim makinelerinin gelişimini ve gelişimini birbirinden ayırabilecek bir durum bulmanız gerekecek. Bu, bir yapılandırma öğesi kadar basit olabilir veya hata ayıklama modunun açık olup olmadığını kontrol edebilir.

+0

Normal bir kullanıcıyı sınamak isteyebileceğinizden veya analytics'e bir şey göndermeden yerel olarak oturum açmamış olabileceğinizden beri bu gerçekten sorun değil. – Lipis

+0

Yukarıda belirttiğim gibi, anlatmak için kullanabileceğiniz doğru koşulu bulmanız gerekiyor. Bir üretim makinesinden ayrı bir geliştirme makinesi. Benim için yönetici değil yönetici hakkındaydı, sizin için makinenin ana makine adını, IP adresini, geliştirme makinelerinizi benzersiz olarak tanımlayan bir şeyi kontrol etme meselesi olabilir. – Miguel

+0

Benim kötü .. bütün cevabı okumak için çok tembel oldu ..: / – Lipis

0

Bunu test etmedim, ancak şablonların config nesnesine erişebileceğini düşünüyorum.

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

:

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