2014-04-04 8 views
40

मैं अपने सर्वर के लिए फ्लास्क माइक्रोफ्रेमवर्क का उपयोग कर रहा हूं जो जिंज टेम्पलेट का उपयोग करता है। मेरे पास parent template.html और कुछ बच्चे child1.html, child2.html हैं। इनमें से कुछ बच्चे बहुत बड़ी एचटीएमएल फाइलें हैं और मैं किसी भी तरह से अपने काम पर बेहतर लचीलापन के लिए उन्हें विभाजित करना चाहता हूं।Jinja2 टेम्पलेट में HTML फ़ाइल शामिल करें

main.py:

from flask import Flask, request, render_template 

app = Flask(__name__) 

@app.route('/') 
@app.route('/<task>') 
def home(task=''): 
    return render_template('child1.html', task=task) 

app.run() 

सरलीकृत template.html:

{% extends 'template.html' %} 
{% block content %} 
    {% if task == 'content1' %} 
     <!-- include content1.html --> 
    {% endif %} 
    {% if task == 'content2' %} 
     <!-- include content2.html --> 
    {% endif %} 
{% endblock %} 
टिप्पणी

की

बजाय:

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
    <div class="container"> 
     {% block content %} 
     {% endblock %} 
    </div> 
</body> 
</html> 

और जादू child1.html में है

<!-- include content1.html --> 

मेरे पास बहुत सारे HTML टेक्स्ट हैं। और परिवर्तनों का ट्रैक रखना और कुछ गलतियों को न करना बहुत मुश्किल है, जो खोजने और सही करने के लिए बहुत कठिन हैं। तो मैं इसे child1.html में लिखने के बजाय सामग्री 1.html को लोड करना चाहता हूं। मैं इस प्रश्न Include another HTML file in a HTML file पर आया, लेकिन मुझे इसे लागू करने में समस्याएं थीं। मुझे लगता है कि Jinja2 के लिए एक बेहतर उपकरण हो सकता है।

नोट। ऊपर दिया गया कोड ठीक से काम नहीं कर रहा है, मैंने बस समस्या को सुलझाने के लिए लिखा है।

उत्तर

94

जिन्जा 2 {% include %} निर्देश का उपयोग करें।

{% extends 'template.html' %} 
{% block content %} 
    {% if task == 'content1' %} 
     {% include 'content1.html' %} 
    {% endif %} 
    {% if task == 'content2' %} 
     {% include 'content2.html' %} 
    {% endif %} 
{% endblock %} 

इसमें सामग्री को सही सामग्री-फ़ाइल से शामिल किया जाएगा।

+2

बहुत बहुत धन्यवाद। मैं इस प्रश्न को स्वीकार करता हूं जिसे मैं स्वीकार करता हूं क्योंकि यह उदाहरण का उपयोग करता है कि इसका उपयोग कैसे किया जाए (हालांकि यह इस मामले में बहुत सरल है।) – quapka

9

आप include कथन का उपयोग कर सकते हैं।

+0

@quapka खुश है इससे मदद मिली :) – jarandaf

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