2013-07-02 5 views
5

जब Google Analytics के साथ साइन अप करने के वहाँ js स्क्रिप्ट का एक टुकड़ा यह हमेशा वहाँ है, कि विकास मशीनों अनावश्यक डेटा है कि वास्तविक से नहीं है, प्रस्तुत हैं होने के साथ base.htmlफ्लास्क: Google Analytics JS को dev पर्यावरण में चलाने के लिए कैसे रोकें?

समस्या में डाला जा करने की जरूरत है उपयोगकर्ताओं। मैं सोच रहा था कि क्या पूछने का कोई तरीका है कि फ्लास्क डीबग मोड में है या नहीं, और इसलिए इस स्क्रिप्ट को पहले स्थान पर लोड न करें।

मैं टेम्पलेट में डीबग मोड की जांच कैसे कर सकता हूं?

उत्तर

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.py, main.py, analytics.html) के ऊपर मेरी gae-init परियोजना में उपयोग किया जाता है: यदि आप current_user बोतल तो जिस तरह से लागू किया तो अपने टेम्पलेट परिवर्तन करने के लिए किया जाना चाहिए।

0

मेरे पास मेरे फ्लास्क साइट के साथ एक समान मामला है। मैं अपने उपयोगकर्ताओं के लिए गतिविधि लॉग करना चाहता हूं, लेकिन मैं एडमिनिस्ट्रेशन में जाने और आंकड़ों को छोड़ने के लिए व्यवस्थापक के रूप में अपनी गतिविधि नहीं चाहता हूं।

मैं जोड़ लिया है एक g.is_admin मेरी before_request हैंडलर के लिए:

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

फिर टेम्पलेट में मैं Analytics कोड का उपयोग कर जब उचित छोड़ एक सशर्त:

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

अपने परिवेश के लिए निर्धारित है पर निर्भर करता है आपको एक ऐसी स्थिति के साथ आने की आवश्यकता होगी जो विकास बनाम उत्पादन मशीनों को अलग कर सके। यह एक विन्यास आइटम के रूप में सरल हो सकता है, या जांचें कि डीबग मोड चालू है या नहीं।

+0

यह अभी भी ठीक नहीं है क्योंकि आप सामान्य उपयोगकर्ता का परीक्षण करना चाहते हैं या विश्लेषिकी में कुछ भी भेजने के बिना स्थानीय रूप से उपयोगकर्ताओं में लॉग इन नहीं करना चाहते हैं .. – Lipis

+0

जैसा कि मैंने उपरोक्त कहा है, आपको सही स्थिति मिलनी है जिसका उपयोग आप कहने के लिए कर सकते हैं एक उत्पादन मशीन के अलावा एक विकास मशीन। मेरे लिए यह व्यवस्थापक बनाम व्यवस्थापक के बारे में था, आपके लिए यह मशीन के मेजबाननाम, आईपी पते, कुछ विशिष्ट रूप से आपकी विकास मशीनों की पहचान करने की बात हो सकती है। – Miguel

+0

मेरा बुरा .. पूरे जवाब को पढ़ने के लिए बहुत आलसी था ..: / – Lipis

0

मैंने इसका परीक्षण नहीं किया है, लेकिन मुझे लगता है कि टेम्पलेट्स को कॉन्फ़िगर ऑब्जेक्ट तक पहुंच है।

{% if not config['DEBUG'] %} 
    <script> .... </script> 
{% endif %} 
संबंधित मुद्दे