2015-10-02 9 views
5

फ्लास्क के तहत, मैं जिन्जा टेम्पलेट में सामान को शामिल/बहिष्कृत करना चाहता हूं, इस पर आधारित है कि हम डीबग मोड में हैं या नहीं। मैं बहस नहीं कर रहा हूं अगर यह एक अच्छा, या बुरा है, विचार (मैं 'बुरा' वोट दूंगा लेकिन इस मामले के लिए बस इसे करना चाहता हूं :-), तो यह सबसे अच्छा कैसे हो सकता है?जिन्जा में डीबग मोड का पता लगाने के लिए कैसे?

मुझे उम्मीद थी कि मैं स्पष्ट रूप से टेम्पलेट में चर पारित करने के लिए नहीं होगा इस के विपरीत,:

render_template('foo.html', debug=app.debug) 

नहीं है कि यह बहुत मुश्किल होगा, लेकिन मैं नहीं बल्कि सिर्फ जादुई टेम्पलेट में कहना चाहते हैं:

{% if debug %} 
     go crazzzzy 
{% endif %} 

क्या कुछ डिफ़ॉल्ट चर सिर्फ मुझे उछालने के लिए इंतज़ार कर रहा है?

+0

आप 'g.debug' कुछ अन्य डिबग स्विच तंत्र पर (अन्य config चर आधारित स्थापित करने पर विचार किया है/फ़ाइलें, 'config' सहित, http://flask.pocoo.org/docs/0.10/templating/#standard-context देखें) और टेम्पलेट का उपयोग करें? – metatoaster

+0

@ मेटाटोस्टर अच्छा विचार है, लेकिन कुछ लोगों के आसपास घूमने के बाद, कोई खुशी नहीं, कोई खुशी नहीं। –

उत्तर

8

उपयोग context processors

एक टेम्पलेट के संदर्भ में स्वचालित रूप से नए चर इंजेक्षन करने के लिए, संदर्भ प्रोसेसर बोतल में मौजूद हैं। टेम्पलेट प्रस्तुत करने से पहले संदर्भ प्रोटेक्टर चलाए जाते हैं और टेम्पलेट संदर्भ में नए मान लगाने की क्षमता रखते हैं। एक संदर्भ प्रोसेसर एक ऐसा फ़ंक्शन है जो एक शब्दकोश देता है। कुंजी और इस शब्दकोश के मूल्यों तो, टेम्पलेट संदर्भ के साथ विलय कर रहे हैं एप्लिकेशन में सभी टेम्पलेट्स के लिए:

@app.context_processor 
def inject_debug(): 
    return dict(debug=app.debug) 

अब debug टेम्पलेट्स में चर सुलभ।

1

जब आप app.run(debug=True) के साथ अपने कुप्पी एप्लिकेशन को चलाने के लिए, आप भी सिर्फ config वस्तु इतनी तरह की जाँच कर सकते हैं:

{% if config['DEBUG'] %} 
    <h1>My html here</h1> 
{% endif %} 
संबंधित मुद्दे