2012-02-12 14 views
18

शामिल है मैं Jinja2 का उपयोग कर शामिल टेम्पलेट्स से ब्लॉक को संशोधित करने का तरीका नहीं समझ सकता। यहां एक उदाहरण दिया गया है जहां मैं तीन फाइलों का उपयोग करता हूं।ब्लॉक के साथ Jinja2 विरासत और

base.html:

<html>{% include "content.html" %}</html> 

content.html:

<h1>{% block title %}Title{% endblock title%}</h1> 
<div>{% block content_body %}Content Body{% endblock content_body%}</div> 

story.html

{% extends "base.html" %} 
{% block title %}story.title{% endblock title %} 
{% block content_body %}story.description{% endblock content_body %} 

जब story.html प्रतिपादन, मैं मिल जाएगा:

<html> 
<h1>Title</h1> 
<div>Content Body</div> 
</html> 

मैं अपेक्षित मूल्यों के साथ कैसे प्रस्तुत करूं?

+2

@ArminRonacher कहां है जब आपको उसकी आवश्यकता होती है - मुझे एहसास है कि यह 'कहानी' में 'समान' नामों की सामग्रियों को ओवरराइड करने के कारण 'कहानी' शामिल है, भले ही 'कहानी' ओवरराइडिंग हो रहा है '- लेकिन मुझे यह इंगित करने के लिए प्रलेखन में कुछ भी नहीं दिख रहा है कि इसकी अपेक्षा की जा सकती है। –

उत्तर

5

आपको Jinja2 में मैक्रोज़ पर देखना चाहिए। मुझे लगता है कि यह SO question आपके प्रश्नों से संबंधित है।

12

base.html प्रस्तुत नहीं किया गया है क्योंकि यह किसी भी टेम्पलेट द्वारा नहीं बुलाया जाता है।

base.html:

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

content.html:

{% extends "base.html" %} 
{% block html %} 
<h1>{% block title %}Title{% endblock title%}</h1> 
<div>{% block content_body %}Content Body{% endblock content_body%}</div> 
{% endblock %} 

फिर भी, कि शायद overkill है, आप की संभावना मिलेगा क्या आप कर सकता है विस्तार का एक दूसरा स्तर है कि एक एकल आधार टेम्पलेट पर्याप्त है (यानी base.html और content.html को एक ही टेम्पलेट में गठबंधन करें)।

+0

यह टेम्पलेट्स के लिए उचित समाधान है django टेम्पलेट्स की जांच करें वे अवधारणा को समझने के लिए एक समान चीज़ करते हैं। – Bedros

संबंधित मुद्दे