2013-01-10 45 views
8

मैं बच्चे पृष्ठ से टेम्पलेट में कुछ चर पारित करने की कोशिश कर रहा हूं। यह मेरा अजगर कोड है:क्या Jinja2 माता-पिता में चर पारित करने का कोई तरीका है?

if self.request.url.find("&try") == 1: 
     isTrying = False 
    else: 
     isTrying = True 

    page_values = { 
     "trying": isTrying 
    } 

    page = jinja_environment.get_template("p/index.html") 
    self.response.out.write(page.render(page_values)) 

टेम्पलेट:

<html> 
    <head> 
    <link type="text/css" rel="stylesheet" href="/css/template.css"></link> 
    <title>{{ title }} | SST QA</title> 

    <script src="/js/jquery.min.js"></script> 

    {% block head %}{% endblock head %} 
    </head> 
    <body> 
    {% if not trying %} 
    <script type="text/javascript"> 
    // Redirects user to maintainence page 
    window.location.href = "construct" 
    </script> 
    {% endif %} 

    {% block content %}{% endblock content %} 
    </body> 
</html> 

और बच्चे:

{% extends "/templates/template.html" %} 
{% set title = "Welcome" %} 
{% block head %} 
{% endblock head %} 
{% block content %} 
{% endblock content %} 

समस्या है, मैं चर माता पिता में "की कोशिश कर रहा" पास करना चाहते हैं , क्या इसे करने का कोई तरीका है?

अग्रिम धन्यवाद!

उत्तर

2

मुझे आपकी समस्या नहीं आती है। जब आप संदर्भ में चर को पास करते हैं (जैसा कि आप कोशिश कर रहे हैं) ये चर बच्चे और माता-पिता में उपलब्ध होंगे। माता-पिता के लिए शीर्षक से पारित करने के लिए, आप सुपर साथ विरासत का उपयोग करने के लिए, कभी कभी संयोजन में है: http://jinja.pocoo.org/docs/templates/#super-blocks

भी देखें इस सवाल: Overriding app engine template block inside an if

+0

हाँ , मुझे खेद है, मैंने समस्या का पता लगाया है। जवाब सरल है - मत करो। यह मुझे बहुत सारी समस्याएं देता है। –

+2

"उत्तर सरल है -" एक चर का उपयोग करने के बजाय, मैं आमतौर पर पैरेंट ब्लॉक में एक नेस्टेड ब्लॉक जोड़ता हूं, फिर इसे बच्चे में भरता हूं। –

14

Jinja2 टिप्स और ट्रिक्स पृष्ठ पर उदाहरण के लिए, इस पूरी तरह से बताते हैं http://jinja.pocoo.org/docs/templates/#base-template। अनिवार्य रूप से, अगर आप किसी मूल टेम्पलेट

**base.html** 
<html> 
    <head> 
     <title> MegaCorp -{% block title %}{% endblock %}</title> 
    </head> 
    <body> 
     <div id="content">{% block content %}{% endblock %}</div> 
    </body> 
</html> 

और एक बच्चे टेम्पलेट

**child.html** 
{% extends "base.html" %} 
{% block title %} Home page {% endblock %} 
{% block content %} 
... stuff here 
{% endblock %} 

जो कुछ भी अजगर फ़ंक्शन को कॉल render_template ("child.html") है html पृष्ठ वापस आ जाएगी

**Rendered Page** 
<html> 
    <head> 
     <title> MegaCorp - Home </title> 
    </head> 
    <body> 
     <div id="content"> 
      stuff here... 
     </div> 
    </body> 
</html> 
+3

यह संभवतः सही उत्तर के रूप में चिह्नित किया जाना चाहिए कि प्रश्न कैसे तैयार किया गया है। – David