क्या Jinja2 टेम्पलेट-सापेक्ष पथ का समर्थन करता है उदा। %(here)s/other/template.html
, फाइल सिस्टम में वर्तमान टेम्पलेट की जगह के सापेक्ष अन्य टेम्पलेट्स को शामिल करने के लिए?क्या Jinja2 templating भाषा में 'यहां' (वर्तमान निर्देशिका) की अवधारणा है?
उत्तर
मुझे विश्वास नहीं है। आम तौर पर आप जो भी टेम्पलेट लोडर और पर्यावरण का उपयोग कर रहे हैं, उसकी जड़ से संबंधित अपने पथ निर्दिष्ट करके अन्य टेम्पलेट्स को शामिल या विस्तारित करते हैं। ,
import jinja2
template_dir = '/path/to/templates'
loader = jinja2.FileSystemLoader(template_dir)
environment = jinja2.Environment(loader=loader)
अब अगर आप /path/to/templates/index.html
टेम्पलेट में /path/to/templates/includes/sidebar.html
शामिल करना चाहते हैं, तो आप लिखते हैं:
तो मान लें कि आपका टेम्पलेट्स /path/to/templates
में सभी कर रहे हैं और आप तो जैसे जिंजा सेट कर लेते हैं अपने index.html
में निम्नलिखित:
{% include 'includes/sidebar.html' %}
और जिंजा यह पता लगाने होगा कि यह कैसे खोजने के लिए।
jinja2.Environment.join_path() के लिए प्रलेखन के अनुसार, "टेम्पलेट पथ में शामिल होने" को लागू करने के लिए join_path() को ओवरराइड करके सापेक्ष टेम्पलेट पथों के लिए समर्थन संभव है।
class RelEnvironment(jinja2.Environment):
"""Override join_path() to enable relative template paths."""
def join_path(self, template, parent):
return os.path.join(os.path.dirname(parent), template)
बस विल McCutchen के जवाब में जोड़ने के लिए,
आप अपने लोडर में एकाधिक निर्देशिका हो सकता है। यह तब तक प्रत्येक निर्देशिका (क्रम में) में खोज करता है जब तक कि यह टेम्पलेट नहीं पाता।
उदाहरण के लिए, यदि आप के बजाय "/includes/sidebar.html" के "sidebar.html" करना चाहते थे तो है:
loader=jinja2.FileSystemLoader(
[os.path.join(os.path.dirname(__file__),"templates/includes"),
os.path.join(os.path.dirname(__file__),"templates")])
बजाय
loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__),"templates"))
को स्पष्ट तरीका
+०१२३५१६४१०६१: इस सीमा को पार, एक jinja2 विस्तार है जो की पसंद में करने के लिए import relative template namesकुछ की अनुमति देगा के साथ होगा
from jinja2.ext import Extension
import re
class RelativeInclude(Extension):
"""Allows to import relative template names"""
tags = set(['include2'])
def __init__(self, environment):
super(RelativeInclude, self).__init__(environment)
self.matcher = re.compile("\.*")
def parse(self, parser):
node = parser.parse_include()
template = node.template.as_const()
if template.startswith("."):
# determine the number of go ups
up = len(self.matcher.match(template).group())
# split the current template name into path elements
# take elements minus the number of go ups
seq = parser.name.split("/")[:-up]
# extend elements with the relative path elements
seq.extend(template.split("/")[1:])
template = "/".join(seq)
node.template.value = template
return node
- 1. एक templating भाषा क्या है?
- 2. प्रोग्रामिंग भाषा अवधारणा सीखना
- 3. बैच फ़ाइल में वर्तमान निर्देशिका क्या है?
- 4. Jinja2 (बोतल) templating इंजन के साथ Parameterized पुन: प्रयोज्य ब्लॉक
- 5. विम की वर्तमान हाइलाइज्ड भाषा
- 6. '।' की उत्पत्ति क्या है वर्तमान निर्देशिका का मतलब है?
- 7. अवधारणा और deserialization अवधारणा क्या है?
- 8. लोगो की वर्तमान स्थिति क्या है? (प्रोग्रामिंग भाषा)
- 9. क्या ड्रोलस फ़्यूज़न में "अब" की अवधारणा है?
- 10. बुलबुला अवधारणा क्या है?
- 11. क्या सी ++ में परावर्तक की तरह कोई अवधारणा है। नेट?
- 12. क्या एक ट्यूरिंग मशीन में 'समय' की अवधारणा है?
- 13. स्कैला में "कमजोर अनुरूपता" की अवधारणा क्या है?
- 14. .NET में एक असेंबली की अवधारणा क्या है?
- 15. क्या ओरेकल में फ़िल्टर की गई इंडेक्स अवधारणा है?
- 16. विंडोज़ एज़ूर क्लाउड में * कार्यकर्ता भूमिका * की अवधारणा क्या है?
- 17. बोतल/Jinja2
- 18. क्या एनयूनीट असेंबली टियरडाउन की अवधारणा का समर्थन करता है?
- 19. डार्ट में स्नैपशॉट अवधारणा क्या है?
- 20. YouTrack में तैराकी अवधारणा क्या है?
- 21. जेएसपी templating
- 22. टी 4 समाधान की वर्तमान कार्य निर्देशिका
- 23. वर्तमान वर्कस्पेस निर्देशिका की परिवर्तनीय संख्या
- 24. सी भाषा में वर्तमान दिन कैसे खोजें?
- 25. वर्तमान में, मैं निम्नलिखित कोड है निर्देशिका
- 26. वर्तमान गो भाषा परियोजनाएं
- 27. angular.js में templating - विरासत
- 28. बैच फ़ाइल में वर्तमान उपयोगकर्ता की निर्देशिका में कैसे बदलें
- 29. एसबीसीएल की वर्तमान निर्देशिका कैसे बदलें?
- 30. कैसे उत्पादन "" "में" यहां "की