मैं जिन्जा 2 टेम्पलेट में HTML फ़ाइल कैसे शामिल करूं?


85

मैं अपने सर्वर के लिए फ्लास्क माइक्रो-फ्रेमवर्क का उपयोग कर रहा हूं जो जिन्जा टेम्पलेट का उपयोग करता है।

मेरे पास माता template.html- पिता हैं और कुछ बच्चों को बुलाया जाता है child1.htmlऔर child2.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:

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

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

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

टिप्पणियों के बजाय:

<!-- include content1.html -->

मेरे पास बहुत सारे HTML पाठ हैं, और परिवर्तनों पर नज़र रखना और कुछ गलतियाँ न करना बहुत कठिन है, जो तब ढूंढना और सही करना बहुत कठिन है।

मैं content1.htmlयह सब लिखने के बजाय सिर्फ लोड करना चाहता हूं child1.html

मैं इस सवाल पर आया था, लेकिन मुझे इसे लागू करने में समस्या थी।

मुझे लगता है कि इसके लिए जिंजा 2 एक बेहतर उपकरण हो सकता है।

नोट: ऊपर दिया गया कोड ठीक से काम नहीं कर रहा है, मैंने इसे समस्या को स्पष्ट करने के लिए लिखा था।

जवाबों:


184

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

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

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


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.