Django 2.1 - Built-in template tags and filters

अंतर्निहित टेम्प्लेट टैग और फ़िल्टर




django

अंतर्निहित टेम्प्लेट टैग और फ़िल्टर

यह दस्तावेज़ Django के अंतर्निहित टेम्पलेट टैग और फ़िल्टर का वर्णन करता है। यह अनुशंसा की जाती है कि यदि आप उपलब्ध हैं, तो आप स्वचालित प्रलेखन का उपयोग करते हैं, क्योंकि इसमें स्थापित किसी भी कस्टम टैग या फ़िल्टर के लिए प्रलेखन भी शामिल होगा।

अंतर्निहित टैग संदर्भ

autoescape

वर्तमान ऑटो-भागने वाले व्यवहार को नियंत्रित करता है। यह टैग तर्क के रूप में या तो off या off है और यह निर्धारित करता है कि ब्लॉक के अंदर ऑटो-भागने का प्रभाव है या नहीं। ब्लॉक को एक endautoescape एंडिंग टैग के साथ बंद किया गया है।

जब ऑटो-भागने प्रभाव में होता है, तो आउटपुट में परिणाम (लेकिन किसी भी फ़िल्टर लागू होने के बाद) से पहले सभी परिवर्तनीय सामग्री को HTML से बचना होता है। यह मैन्युअल रूप से escape फ़िल्टर को प्रत्येक चर पर लागू करने के बराबर है।

एकमात्र अपवाद वे चर हैं जो पहले से ही भागने से "सुरक्षित" के रूप में चिह्नित हैं, या तो उस कोड द्वारा, जो चर को आबादी देता है, या क्योंकि इसमें safe या escape फ़िल्टर लागू किया गया है।

नमूना उपयोग:

{% autoescape on %}
    {{ body }}
{% endautoescape %}

block

एक ब्लॉक को परिभाषित करता है जिसे बाल टेम्प्लेट द्वारा ओवरराइड किया जा सकता है। अधिक जानकारी के लिए टेम्पलेट विरासत देखें।

comment

{% comment %} और {% endcomment %} बीच सब कुछ {% endcomment %} । पहले टैग में एक वैकल्पिक नोट डाला जा सकता है। उदाहरण के लिए, यह उपयोगी है जब कोड को अक्षम करने के लिए कोड की टिप्पणी करना क्यों कोड अक्षम था।

नमूना उपयोग:

<p>Rendered text with {{ pub_date|date:"c" }}</p>
{% comment "Optional note" %}
    <p>Commented out text with {{ create_date|date:"c" }}</p>
{% endcomment %}

comment टैग नेस्टेड नहीं किया जा सकता है।

csrf_token

यह टैग CSRF सुरक्षा के लिए उपयोग किया जाता है, जैसा कि क्रॉस साइट रिक्वेस्ट फोर्सेज के लिए प्रलेखन में वर्णित है।

cycle

इस टैग के सामने आने पर हर बार इसका एक तर्क तैयार करता है। पहला तर्क पहले एनकाउंटर पर, दूसरा एनकाउंटर दूसरे तर्क पर और इसके बाद उत्पन्न होता है। एक बार सभी तर्क समाप्त हो जाने के बाद, टैग पहले तर्क पर चक्र लगाता है और इसे फिर से बनाता है।

यह टैग लूप में विशेष रूप से उपयोगी है:

{% for o in some_list %}
    <tr class="{% cycle 'row1' 'row2' %}">
        ...
    </tr>
{% endfor %}

पहला पुनरावृत्ति HTML पैदा करता है जो वर्ग row1 को संदर्भित करता है, दूसरा row2 , तीसरा फिर से row1 को, और इसी तरह लूप के प्रत्येक पुनरावृत्ति के लिए।

आप चर का भी उपयोग कर सकते हैं। उदाहरण के लिए, यदि आपके पास दो टेम्प्लेट चर, rowvalue1 और rowvalue2 , तो आप इस तरह उनके मूल्यों के बीच वैकल्पिक कर सकते हैं:

{% for o in some_list %}
    <tr class="{% cycle rowvalue1 rowvalue2 %}">
        ...
    </tr>
{% endfor %}

चक्र में शामिल चर बच जाएंगे। आप इसके साथ स्वतः-भागने को अक्षम कर सकते हैं:

{% for o in some_list %}
    <tr class="{% autoescape off %}{% cycle rowvalue1 rowvalue2 %}{% endautoescape %}">
        ...
    </tr>
{% endfor %}

आप चर और तार मिला सकते हैं:

{% for o in some_list %}
    <tr class="{% cycle 'row1' rowvalue2 'row3' %}">
        ...
    </tr>
{% endfor %}

कुछ मामलों में आप अगले मूल्य को आगे बढ़ाए बिना एक चक्र के वर्तमान मूल्य को संदर्भित करना चाह सकते हैं। ऐसा करने के लिए, बस {% cycle %} एक टैग दें, जैसे "इस" का उपयोग करके:

{% cycle 'row1' 'row2' as rowcolors %}

उसके बाद से, आप चक्र के वर्तमान मान को संदर्भ चर के रूप में संदर्भित करके अपने टेम्पलेट में जहाँ चाहें अपने वर्तमान को सम्मिलित कर सकते हैं। यदि आप मूल cycle टैग से स्वतंत्र रूप से अगले मूल्य पर चक्र को स्थानांतरित करना चाहते हैं, तो आप दूसरे cycle टैग का उपयोग कर सकते हैं और चर का नाम निर्दिष्ट कर सकते हैं। तो, निम्न टेम्पलेट:

<tr>
    <td class="{% cycle 'row1' 'row2' as rowcolors %}">...</td>
    <td class="{{ rowcolors }}">...</td>
</tr>
<tr>
    <td class="{% cycle rowcolors %}">...</td>
    <td class="{{ rowcolors }}">...</td>
</tr>

उत्पादन होगा:

<tr>
    <td class="row1">...</td>
    <td class="row1">...</td>
</tr>
<tr>
    <td class="row2">...</td>
    <td class="row2">...</td>
</tr>

आप रिक्त स्थान द्वारा अलग किए गए cycle टैग में किसी भी संख्या के मान का उपयोग कर सकते हैं। एकल उद्धरणों ( ' ) या दोहरे उद्धरणों ( " ) में संलग्न मानों को स्ट्रिंग शाब्दिक के रूप में माना जाता है, जबकि उद्धरण के बिना मूल्यों को वर्णक के रूप में माना जाता है।

डिफ़ॉल्ट रूप से, जब आप चक्र टैग के साथ कीवर्ड का उपयोग करते हैं, तो {% cycle %} का उपयोग जो चक्र शुरू करता है, वह चक्र में पहले मूल्य का उत्पादन करेगा। यदि आप नेस्टेड लूप या किसी सम्मिलित टेम्पलेट में मान का उपयोग करना चाहते हैं तो यह एक समस्या हो सकती है। यदि आप केवल चक्र को घोषित करना चाहते हैं, लेकिन पहले मूल्य का उत्पादन नहीं करते हैं, तो आप टैग में अंतिम कीवर्ड के रूप में एक silent कीवर्ड जोड़ सकते हैं। उदाहरण के लिए:

{% for obj in some_list %}
    {% cycle 'row1' 'row2' as rowcolors silent %}
    <tr class="{{ rowcolors }}">{% include "subtemplate.html" %}</tr>
{% endfor %}

यह row1 और row2 बीच class प्रत्यावर्तन के साथ <tr> तत्वों की एक सूची का उत्पादन करेगा। rowcolors में इसके संदर्भ में rowcolors तक पहुंच होगी और मूल्य <tr> के वर्ग से मेल खाएगा जो इसे घेरता है। यदि silent कीवर्ड को छोड़ा जाना था, तो row1 और row2 को सामान्य पाठ के रूप में <tr> तत्व के बाहर उत्सर्जित किया जाएगा।

जब साइलेंट कीवर्ड का उपयोग साइकिल परिभाषा पर किया जाता है, तो साइलेंस स्वचालित रूप से उस विशिष्ट चक्र टैग के सभी बाद के उपयोगों पर लागू होता है। निम्न टेम्पलेट कुछ भी आउटपुट नहीं करेगा, जबकि {% cycle %} लिए दूसरी कॉल silent नहीं है:

{% cycle 'row1' 'row2' as rowcolors silent %}
{% cycle rowcolors %}

जब आप अगली बार सामना करते हैं तो अपने पहले मूल्य से {% cycle %} टैग पुनः आरंभ करने के लिए आप resetcycle टैग का उपयोग कर सकते हैं।

debug

वर्तमान संदर्भ और आयातित मॉड्यूल सहित डिबगिंग जानकारी का एक संपूर्ण भार आउटपुट करता है।

extends

सिग्नल कि यह टेम्पलेट एक मूल टेम्पलेट का विस्तार करता है।

इस टैग को दो तरीकों से उपयोग किया जा सकता है:

  • {% extends "base.html" %} करता है (उद्धरण के साथ) मूल टेम्पलेट के नाम के रूप में शाब्दिक मान "base.html" का उपयोग करता है।
  • {% extends variable %} करता है {% extends variable %} के मूल्य का उपयोग करता है। यदि चर स्ट्रिंग का मूल्यांकन करता है, तो Django उस स्ट्रिंग को मूल टेम्पलेट के नाम के रूप में उपयोग करेगा। यदि चर Template ऑब्जेक्ट का मूल्यांकन करता है, तो Django उस ऑब्जेक्ट को मूल टेम्पलेट के रूप में उपयोग करेगा।

अधिक जानकारी के लिए टेम्पलेट विरासत देखें।

आम तौर पर टेम्प्लेट का नाम टेम्प्लेट लोडर की रूट डायरेक्टरी के सापेक्ष होता है। एक स्ट्रिंग तर्क भी एक सापेक्ष पथ हो सकता है जो ../ । या ../ शुरू होता है। उदाहरण के लिए, निम्न निर्देशिका संरचना मानें:

dir1/
    template.html
    base2.html
    my/
        base3.html
base1.html

template.html , निम्नलिखित पथ मान्य होंगे:

{% extends "./base2.html" %}
{% extends "../base1.html" %}
{% extends "./my/base3.html" %}

filter

एक या अधिक फ़िल्टर के माध्यम से ब्लॉक की सामग्री को फ़िल्टर करता है। कई फिल्टर पाइप के साथ निर्दिष्ट किए जा सकते हैं और फिल्टर में तर्क हो सकते हैं, जैसे कि चर वाक्यविन्यास में।

ध्यान दें कि ब्लॉक में filter और endfilter टैग के बीच का सारा पाठ शामिल है।

नमूना उपयोग:

{% filter force_escape|lower %}
    This text will be HTML-escaped, and will appear in all lowercase.
{% endfilter %}

ध्यान दें

escape और safe फिल्टर स्वीकार्य तर्क नहीं हैं। इसके बजाय, टेम्प्लेट कोड के ब्लॉक के लिए ऑटोट्सफ़ॉर्मिंग को प्रबंधित करने के लिए autoescape टैग का उपयोग करें।

firstof

पहला तर्क चर आउटपुट करता है जो False नहीं है। आउटपुट कुछ भी नहीं अगर सभी पारित चर False

नमूना उपयोग:

{% firstof var1 var2 var3 %}

यह इसके बराबर है:

{% if var1 %}
    {{ var1 }}
{% elif var2 %}
    {{ var2 }}
{% elif var3 %}
    {{ var3 }}
{% endif %}

आप एक शाब्दिक स्ट्रिंग का भी उपयोग कर सकते हैं क्योंकि सभी पारित चर झूठी होने की स्थिति में एक फॉलबैक मूल्य है:

{% firstof var1 var2 var3 "fallback value" %}

यह टैग वैरिएबल ऑटो से बच जाता है। आप इसके साथ स्वतः-भागने को अक्षम कर सकते हैं:

{% autoescape off %}
    {% firstof var1 var2 var3 "<strong>fallback value</strong>" %}
{% endautoescape %}

या यदि केवल कुछ चर बच जाए, तो आप उपयोग कर सकते हैं:

{% firstof var1 var2|safe var3 "<strong>fallback value</strong>"|safe %}

आप किसी चर के अंदर आउटपुट को संग्रहीत करने के लिए सिंटैक्स {% firstof var1 var2 var3 as value %} उपयोग कर सकते हैं।

for

किसी सरणी में प्रत्येक आइटम पर लूप्स, आइटम को संदर्भ चर में उपलब्ध कराते हैं। उदाहरण के लिए, athlete_list में athlete_list गए एथलीटों की सूची प्रदर्शित करने के लिए:

<ul>
{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
{% endfor %}
</ul>

आप उल्टे {% for obj in list reversed %} सूची में {% for obj in list reversed %} का उपयोग करके रिवर्स में एक सूची पर लूप कर सकते हैं।

यदि आपको सूचियों की सूची पर लूप करने की आवश्यकता है, तो आप प्रत्येक सबलिस्ट में मूल्यों को अलग-अलग चर में अनपैक कर सकते हैं। उदाहरण के लिए, यदि आपके संदर्भ में (x, y) को निर्देशांक कहा points , तो आप निम्न बिंदुओं की सूची का उत्पादन करने के लिए निम्नलिखित points उपयोग कर सकते हैं:

{% for x, y in points %}
    There is a point at {{ x }},{{ y }}
{% endfor %}

यह तब भी उपयोगी हो सकता है जब आपको किसी शब्दकोश में वस्तुओं तक पहुँचने की आवश्यकता हो। उदाहरण के लिए, यदि आपके संदर्भ में एक शब्दकोश data , तो निम्नलिखित शब्दकोष की कुंजी और मान प्रदर्शित करेगा:

{% for key, value in data.items %}
    {{ key }}: {{ value }}
{% endfor %}

ध्यान रखें कि डॉट ऑपरेटर के लिए, शब्दकोश कुंजी लुकअप विधि लुकअप पर पूर्वता लेता है। इसलिए यदि data शब्दकोश में 'items' नाम 'items' कुंजी होती है, तो data.items data['items'] बजाय data.items() । अगर आप उन तरीकों को टेम्प्लेट ( items , values , keys , इत्यादि) में उपयोग करना चाहते हैं, तो उन कुंजियों को जोड़ने से बचें, जैसे कि शब्दकोश विधियों के नाम। टेम्पलेट चर के प्रलेखन में डॉट ऑपरेटर के लुकअप ऑर्डर के बारे में और पढ़ें।

लूप के लिए लूप के भीतर उपलब्ध कई चर सेट करता है:

परिवर्तनशील विवरण
forloop.counter लूप की वर्तमान पुनरावृत्ति (1-अनुक्रमित)
forloop.counter0 लूप की वर्तमान पुनरावृत्ति (0-अनुक्रमित)
forloop.revcounter लूप के अंत से पुनरावृत्तियों की संख्या (1-अनुक्रमित)
forloop.revcounter0 लूप के अंत से पुनरावृत्तियों की संख्या (0-अनुक्रमित)
forloop.first सच है अगर यह लूप के माध्यम से पहली बार है
forloop.last सही है अगर यह लूप के माध्यम से आखिरी बार है
forloop.parentloop नेस्टेड लूप्स के लिए, यह वर्तमान एक के आसपास का लूप है

for ... empty

टैग के लिए एक वैकल्पिक {% empty %} ले सकते हैं, जिसका पाठ यदि दिए गए सरणी खाली है या नहीं मिल सकता है तो प्रदर्शित होता है:

<ul>
{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
{% empty %}
    <li>Sorry, no athletes in this list.</li>
{% endfor %}
</ul>

इसके बाद के संस्करण के बराबर है - लेकिन कम, क्लीनर, और संभवतः से तेज - निम्नलिखित:

<ul>
  {% if athlete_list %}
    {% for athlete in athlete_list %}
      <li>{{ athlete.name }}</li>
    {% endfor %}
  {% else %}
    <li>Sorry, no athletes in this list.</li>
  {% endif %}
</ul>

if

{% if %} टैग किसी चर का मूल्यांकन करता है, और यदि वह चर "सत्य" है (अर्थात मौजूद है, खाली नहीं है, और गलत बूलियन मूल्य नहीं है) ब्लॉक की सामग्री आउटपुट हैं:

{% if athlete_list %}
    Number of athletes: {{ athlete_list|length }}
{% elif athlete_in_locker_room_list %}
    Athletes should be out of the locker room soon!
{% else %}
    No athletes.
{% endif %}

उपरोक्त में, यदि athlete_list खाली नहीं है, तो एथलीटों की संख्या {{ athlete_list|length }} चर द्वारा प्रदर्शित की जाएगी।

जैसा कि आप देख सकते हैं, if टैग एक या कई {% elif %} खंड ले सकता है, साथ ही एक {% else %} खंड जो पिछले सभी स्थितियों में विफल होने पर प्रदर्शित किया जाएगा। ये खंड वैकल्पिक हैं।

बूलियन ऑपरेटर्स

if टैग कई चर का परीक्षण कर सकते हैं या not , or किसी दिए गए चर को नकारने के लिए:

{% if athlete_list and coach_list %}
    Both athletes and coaches are available.
{% endif %}

{% if not athlete_list %}
    There are no athletes.
{% endif %}

{% if athlete_list or coach_list %}
    There are some athletes or some coaches.
{% endif %}

{% if not athlete_list or coach_list %}
    There are no athletes or there are some coaches.
{% endif %}

{% if athlete_list and not coach_list %}
    There are some athletes and absolutely no coaches.
{% endif %}

एक ही टैग के भीतर और or दोनों खंडों का उपयोग करने की अनुमति दी जाती है, उदाहरण के लिए or से अधिक होने के साथ:

{% if athlete_list and coach_list or cheerleader_list %}

जैसे व्याख्या की जाएगी:

if (athlete_list and coach_list) or cheerleader_list

if अवैध टैग वाक्यविन्यास में वास्तविक कोष्ठक का उपयोग है। यदि आपको उन्हें पूर्वनिर्धारितता दर्शाने की आवश्यकता है, तो आपको टैग के लिए नेस्टेड का उपयोग करना चाहिए।

if टैग आपरेटरों का उपयोग भी कर सकते हैं == != , < , > , <= , >= , in , not in , is , और जो इस प्रकार काम is not कर रहा है:

== ऑपरेटर

समानता। उदाहरण:

{% if somevar == "x" %}
  This appears if variable somevar equals the string "x"
{% endif %}
!= ऑपरेटर

असमानता। उदाहरण:

{% if somevar != "x" %}
  This appears if variable somevar does not equal the string "x",
  or if somevar is not found in the context
{% endif %}
< संचालक

से कम। उदाहरण:

{% if somevar < 100 %}
  This appears if variable somevar is less than 100.
{% endif %}
> संचालक

से अधिक। उदाहरण:

{% if somevar > 0 %}
  This appears if variable somevar is greater than 0.
{% endif %}
<= ऑपरेटर

से कम या बराबर। उदाहरण:

{% if somevar <= 100 %}
  This appears if variable somevar is less than 100 or equal to 100.
{% endif %}
>= ऑपरेटर

इससे बड़ा या इसके बराबर। उदाहरण:

{% if somevar >= 1 %}
  This appears if variable somevar is greater than 1 or equal to 1.
{% endif %}
ऑपरेटर में

के भीतर निहित। इस ऑपरेटर को कई पायथन कंटेनरों द्वारा यह जांचने के लिए समर्थित किया जाता है कि दिए गए मूल्य कंटेनर में हैं या नहीं। निम्नलिखित कुछ उदाहरण हैं कि कैसे x in y व्याख्या की जाएगी:

{% if "bc" in "abcdef" %}
  This appears since "bc" is a substring of "abcdef"
{% endif %}

{% if "hello" in greetings %}
  If greetings is a list or set, one element of which is the string
  "hello", this will appear.
{% endif %}

{% if user in users %}
  If users is a QuerySet, this will appear if user is an
  instance that belongs to the QuerySet.
{% endif %}
ऑपरेटर not in

भीतर समाहित नहीं। यह ऑपरेटर की उपेक्षा है।

संचालक है

वस्तु पहचान। टेस्ट यदि दो मान एक ही वस्तु हैं। उदाहरण:

{% if somevar is True %}
  This appears if and only if somevar is True.
{% endif %}

{% if somevar is None %}
  This appears if somevar is None, or if somevar is not found in the context.
{% endif %}
संचालक is not है

नकारात्मक वस्तु पहचान। टेस्ट यदि दो मान समान ऑब्जेक्ट नहीं हैं। यह है ऑपरेटर की उपेक्षा। उदाहरण:

{% if somevar is not True %}
  This appears if somevar is not True, or if somevar is not found in the
  context.
{% endif %}

{% if somevar is not None %}
  This appears if and only if somevar is not None.
{% endif %}

फिल्टर

यदि आप अभिव्यक्ति में फिल्टर का उपयोग कर सकते हैं। उदाहरण के लिए:

{% if messages|length >= 100 %}
   You have lots of messages today!
{% endif %}

जटिल भाव

उपरोक्त सभी को जटिल अभिव्यक्ति बनाने के लिए जोड़ा जा सकता है। ऐसी अभिव्यक्तियों के लिए, यह जानना महत्वपूर्ण हो सकता है कि अभिव्यक्ति के मूल्यांकन के समय ऑपरेटरों को कैसे वर्गीकृत किया जाता है - अर्थात, पूर्ववर्ती नियम। संचालकों की प्राथमिकता, निम्नतम से उच्चतम तक, इस प्रकार है:

  • or
  • and
  • not
  • in
  • == ; != ; < , > , <= >=

(यह बिल्कुल पायथन का अनुसरण करता है)। इसलिए, उदाहरण के लिए, निम्न जटिल if टैग:

{% if a == b or c == d and e %}

... के रूप में व्याख्या की जाएगी:

(a == b) or ((c == d) and e)

यदि आपको अलग-अलग पूर्वता की आवश्यकता है, तो आपको टैग के लिए नेस्टेड का उपयोग करने की आवश्यकता होगी। कभी-कभी यह स्पष्टता के लिए वैसे भी बेहतर है, उन लोगों के लिए जो पूर्ववर्ती नियमों को नहीं जानते हैं।

तुलना संचालकों को पायथन में या गणितीय संकेतन में 'जंजीर' नहीं बनाया जा सकता है। उदाहरण के लिए, उपयोग करने के बजाय:

{% if a > b > c %}  (WRONG)

आपको उपयोग करना चाहिए:

{% if a > b and b > c %}

ifnotequal और ifnotequal

{% ifequal ab %} ... {% endifequal %} {% if a == b %} ... {% endif %} लिखने का अप्रचलित तरीका है। इसी तरह, {% ifnotequal ab %} ... {% endifnotequal %} को इस {% if a != b %} ... {% endif %} द्वारा {% if a != b %} ... {% endif %}ifnotequal और ifnotequal टैग भविष्य की रिलीज़ में ifnotequal जाएंगे।

ifchanged

जांचें कि क्या मान एक लूप के अंतिम पुनरावृत्ति से बदल गया है।

{% ifchanged %} ब्लॉक टैग का उपयोग लूप के भीतर किया जाता है। इसके दो संभावित उपयोग हैं।

  1. अपने पिछले राज्य के खिलाफ अपनी स्वयं की प्रदान की गई सामग्री की जांच करता है और केवल सामग्री को प्रदर्शित करता है यदि यह बदल गया है। उदाहरण के लिए, यह दिनों की एक सूची प्रदर्शित करता है, केवल महीने को प्रदर्शित करता है यदि यह बदलता है:

    <h1>Archive for {{ year }}</h1>
    
    {% for date in days %}
        {% ifchanged %}<h3>{{ date|date:"F" }}</h3>{% endifchanged %}
        <a href="{{ date|date:"M/d"|lower }}/">{{ date|date:"j" }}</a>
    {% endfor %}
    
  2. यदि एक या अधिक चर दिए गए हैं, तो जांचें कि क्या कोई चर बदल गया है। उदाहरण के लिए, निम्न हर बार जब वह समय बदलता है, तो यह दर्शाता है कि घंटा या तो दिनांक बदल रहा है या नहीं:

    {% for date in days %}
        {% ifchanged date.date %} {{ date.date }} {% endifchanged %}
        {% ifchanged date.hour date.date %}
            {{ date.hour }}
        {% endifchanged %}
    {% endfor %}
    

ifchanged टैग वैकल्पिक {% else %} ifchanged {% else %} भी ले सकता है, जो कि मान नहीं बदला गया तो प्रदर्शित किया जाएगा:

{% for match in matches %}
    <div style="background-color:
        {% ifchanged match.ballot_id %}
            {% cycle "red" "blue" %}
        {% else %}
            gray
        {% endifchanged %}
    ">{{ match }}</div>
{% endfor %}

include

एक टेम्पलेट को लोड करता है और इसे वर्तमान संदर्भ के साथ प्रस्तुत करता है। यह एक टेम्पलेट के भीतर "सहित" अन्य टेम्पलेट्स का एक तरीका है।

टेम्प्लेट का नाम या तो एक चर या हार्ड-कोडेड (उद्धृत) स्ट्रिंग हो सकता है, या तो सिंगल या डबल कोट्स में।

इस उदाहरण में "foo/bar.html" टेम्पलेट की सामग्री शामिल है:

{% include "foo/bar.html" %}

आम तौर पर टेम्प्लेट का नाम टेम्प्लेट लोडर की रूट डायरेक्टरी के सापेक्ष होता है। एक स्ट्रिंग तर्क भी एक रिश्तेदार पथ हो सकता है जो ./ या ../ शुरू होता है जैसा कि extends टैग में वर्णित है।

इस उदाहरण में टेम्प्लेट की सामग्री शामिल है जिसका नाम वैरिएबल template_name name में सम्‍मिलित है:

{% include template_name %}

चर किसी भी वस्तु के साथ एक render() विधि हो सकती है जो एक संदर्भ को स्वीकार करती है। यह आपको अपने संदर्भ में संकलित Template का संदर्भ देने की अनुमति देता है।

एक शामिल टेम्प्लेट को इसमें शामिल टेम्प्लेट के संदर्भ में प्रस्तुत किया गया है। यह उदाहरण आउटपुट "Hello, John!" :

  • प्रसंग: परिवर्तनशील person "John" सेट person है और परिवर्तनशील greeting "Hello" सेट होता है।
  • टेम्पलेट:

    {% include "name_snippet.html" %}
    
  • name_snippet.html टेम्पलेट:

    {{ greeting }}, {{ person|default:"friend" }}!
    

आप कीवर्ड तर्क का उपयोग करके टेम्पलेट के लिए अतिरिक्त संदर्भ पास कर सकते हैं:

{% include "name_snippet.html" with person="Jane" greeting="Hello" %}

यदि आप केवल प्रदान किए गए चर (या यहां तक ​​कि कोई भी चर नहीं) के साथ संदर्भ प्रस्तुत करना चाहते हैं, तो only विकल्प का उपयोग करें। शामिल टेम्पलेट में कोई अन्य चर उपलब्ध नहीं हैं:

{% include "name_snippet.html" with greeting="Hi" only %}

ध्यान दें

include टैग को "इस सबटेम्पलेट को प्रस्तुत करना और HTML को शामिल करना" के कार्यान्वयन के रूप में माना जाना चाहिए, न कि "इस सबसेम्पलेट को पार्स करें और इसकी सामग्री को शामिल करें जैसे कि यह माता-पिता का हिस्सा था"। इसका मतलब यह है कि इसमें शामिल टेम्पलेट्स के बीच कोई साझा स्थिति नहीं है - प्रत्येक शामिल पूरी तरह से स्वतंत्र प्रतिपादन प्रक्रिया है।

ब्लॉक शामिल किए जाने से पहले उनका मूल्यांकन किया जाता है। इसका मतलब है कि एक टेम्पलेट जिसमें दूसरे से ब्लॉक शामिल हैं, जिसमें पहले से मूल्यांकन किए गए और रेंडर किए गए ब्लॉक होंगे - न कि ब्लॉक जिन्हें ओवरराइड किया जा सकता है, उदाहरण के लिए, एक विस्तारित टेम्पलेट।

load

एक कस्टम टेम्पलेट टैग सेट लोड करता है।

उदाहरण के लिए, निम्न टेम्प्लेट सभी टैग और फ़िल्टर को लोड पैकेज में स्थित somelibrary और otherlibrary में पंजीकृत लोड करेगा:

{% load somelibrary package.otherlibrary %}

आप तर्क से किसी लाइब्रेरी से अलग-अलग फ़िल्टर या टैग चुन सकते हैं। इस उदाहरण में, foo और bar नाम के टेम्प्लेट टैग / फिल्टर को somelibrary से लोड किया somelibrary :

{% load foo bar from somelibrary %}

अधिक जानकारी के लिए कस्टम टैग और फ़िल्टर लाइब्रेरी देखें।

lorem

यादृच्छिक "लोरेम इप्सम" लैटिन पाठ प्रदर्शित करता है। यह टेम्प्लेट में नमूना डेटा प्रदान करने के लिए उपयोगी है।

उपयोग:

{% lorem [count] [method] [random] %}

{% lorem %} टैग का उपयोग शून्य, एक, दो या तीन तर्कों के साथ किया जा सकता है। तर्क हैं:

तर्क विवरण
count एक संख्या (या चर) पैराग्राफ की संख्या या उत्पन्न करने के लिए शब्द (डिफ़ॉल्ट 1 है)।
method या तो शब्दों के लिए w , HTML पैराग्राफ के लिए p या प्ले-टेक्स्ट पैराग्राफ ब्लॉक के लिए b (डिफ़ॉल्ट है b )।
random शब्द random , जिसे यदि दिया जाता है, तो पाठ को बनाते समय आम पैराग्राफ ("लोरम इप्सम सिटार अमेट ...") का उपयोग नहीं करता है।

उदाहरण:

  • {% lorem %} आम "lorem ipsum" पैराग्राफ का उत्पादन करेगा।
  • {% lorem 3 p %} आम "lorem ipsum" पैराग्राफ और HTML <p> टैग में लिपटे प्रत्येक दो यादृच्छिक पैराग्राफ का उत्पादन करेगा।
  • {% lorem 2 w random %} दो यादृच्छिक लैटिन शब्दों का उत्पादन करेगा।

now

दिए गए स्ट्रिंग के अनुसार एक प्रारूप का उपयोग करके, वर्तमान दिनांक और / या समय प्रदर्शित करता है। इस तरह के स्ट्रिंग में date फ़िल्टर अनुभाग में वर्णित प्रारूप विनिर्देशक वर्ण हो सकते हैं।

उदाहरण:

It is {% now "jS F Y H:i" %}

ध्यान दें कि यदि आप "कच्चे" मूल्य का उपयोग करना चाहते हैं तो आप एक प्रारूप स्ट्रिंग को बैकस्लैश कर सकते हैं। इस उदाहरण में, दोनों "ओ" और "एफ" बैकस्लैश-बच गए हैं, क्योंकि अन्यथा प्रत्येक एक प्रारूप स्ट्रिंग है जो क्रमशः वर्ष और समय प्रदर्शित करता है:

It is the {% now "jS \o\f F" %}

यह "यह 4 सितंबर का दिन है" के रूप में प्रदर्शित होगा।

ध्यान दें

पास किया गया प्रारूप पूर्वनिर्धारित वाले DATE_FORMAT , DATETIME_FORMAT , SHORT_DATE_FORMAT या SHORT_DATETIME_FORMAT । पूर्वनिर्धारित प्रारूप वर्तमान स्थान के आधार पर भिन्न हो सकते हैं और यदि प्रारूप स्थानीयकरण सक्षम है, उदाहरण के लिए:

It is {% now "SHORT_DATETIME_FORMAT" %}

आप किसी चर के अंदर आउटपुट (स्ट्रिंग के रूप में {% now "Y" as current_year %} को संग्रहीत करने के लिए सिंटैक्स {% now "Y" as current_year %} भी उपयोग कर सकते हैं। यह उपयोगी है अगर आप उदाहरण के लिए blocktrans जैसे टेम्पलेट टैग के अंदर {% now %} का उपयोग करना चाहते {% now %} :

{% now "Y" as current_year %}
{% blocktrans %}Copyright {{ current_year }}{% endblocktrans %}

regroup

एक समान विशेषता द्वारा समान वस्तुओं की सूची को पुन: एकत्रित करता है।

इस जटिल टैग को उदाहरण के माध्यम से सबसे अच्छी तरह से चित्रित किया गया है: कहते हैं कि cities "name" , "population" और "country" कुंजियों वाले शब्दकोशों द्वारा दर्शाए गए cities की एक सूची है।

cities = [
    {'name': 'Mumbai', 'population': '19,000,000', 'country': 'India'},
    {'name': 'Calcutta', 'population': '15,000,000', 'country': 'India'},
    {'name': 'New York', 'population': '20,000,000', 'country': 'USA'},
    {'name': 'Chicago', 'population': '7,000,000', 'country': 'USA'},
    {'name': 'Tokyo', 'population': '33,000,000', 'country': 'Japan'},
]

... और आप एक पदानुक्रमित सूची प्रदर्शित करना चाहेंगे जो इस तरह से देश द्वारा आदेशित हो:

  • इंडिया
    • मुंबई: 19,000,000
    • कलकत्ता: 15,000,000
  • अमेरीका
    • न्यूयॉर्क: 20,000,000
    • शिकागो: 7,000,000
  • जापान
    • टोक्यो: 33,000,000

आप देश के शहरों की सूची को समूहीकृत करने के लिए {% regroup %} टैग का उपयोग कर सकते हैं। टेम्पलेट कोड के निम्नलिखित स्निपेट इसे पूरा करेंगे:

{% regroup cities by country as country_list %}

<ul>
{% for country in country_list %}
    <li>{{ country.grouper }}
    <ul>
        {% for city in country.list %}
          <li>{{ city.name }}: {{ city.population }}</li>
        {% endfor %}
    </ul>
    </li>
{% endfor %}
</ul>

आइए इस उदाहरण के माध्यम से चलते हैं। {% regroup %} तीन तर्क लेता है: जिस सूची को आप फिर से इकट्ठा करना चाहते हैं, उसके द्वारा समूहित करने की विशेषता और परिणामी सूची का नाम। यहां, हम cities सूची को country विशेषता के आधार पर country_list रहे हैं और परिणाम country_list कॉल कर country_list

{% regroup %} country_list {% regroup %} समूह ऑब्जेक्ट्स की एक सूची (इस मामले में, country_list ) का उत्पादन करता है। समूह ऑब्जेक्ट्स ने दो क्षेत्रों के साथ namedtuple() का उदाहरण दिया है:

  • grouper - वह आइटम जिसे समूह द्वारा वर्गीकृत किया गया था (उदाहरण के लिए, स्ट्रिंग "इंडिया" या "जापान")।
  • list - इस समूह की सभी वस्तुओं की एक सूची (उदाहरण के लिए, देश के साथ सभी शहरों की सूची = 'भारत')।

क्योंकि {% regroup %} namedtuple() ऑब्जेक्ट्स का उत्पादन करता है, आप पिछले उदाहरण को इस प्रकार भी लिख सकते हैं:

{% regroup cities by country as country_list %}

<ul>
{% for country, local_cities in country_list %}
    <li>{{ country }}
    <ul>
        {% for city in local_cities %}
          <li>{{ city.name }}: {{ city.population }}</li>
        {% endfor %}
    </ul>
    </li>
{% endfor %}
</ul>

ध्यान दें कि {% regroup %} इसके इनपुट का आदेश नहीं देता है! हमारा उदाहरण इस तथ्य पर निर्भर करता है कि cities सूची को पहले स्थान पर country द्वारा आदेश दिया गया था। यदि cities सूची में country सदस्यों ने आदेश नहीं दिया, तो समूह एक ही देश के लिए एक से अधिक समूहों को प्रदर्शित करेगा। उदाहरण के लिए, मान लें कि cities सूची इस पर सेट की गई थी (ध्यान दें कि देशों को एक साथ समूहित नहीं किया गया है):

cities = [
    {'name': 'Mumbai', 'population': '19,000,000', 'country': 'India'},
    {'name': 'New York', 'population': '20,000,000', 'country': 'USA'},
    {'name': 'Calcutta', 'population': '15,000,000', 'country': 'India'},
    {'name': 'Chicago', 'population': '7,000,000', 'country': 'USA'},
    {'name': 'Tokyo', 'population': '33,000,000', 'country': 'Japan'},
]

cities लिए इस इनपुट के साथ, ऊपर दिए गए उदाहरण {% regroup %} टेम्पलेट कोड निम्न आउटपुट में परिणाम देगा:

  • इंडिया
    • मुंबई: 19,000,000
  • अमेरीका
    • न्यूयॉर्क: 20,000,000
  • इंडिया
    • कलकत्ता: 15,000,000
  • अमेरीका
    • शिकागो: 7,000,000
  • जापान
    • टोक्यो: 33,000,000

इस गोच का सबसे आसान समाधान यह है कि आप अपने व्यू कोड में यह सुनिश्चित कर लें कि आप इसे कैसे प्रदर्शित करना चाहते हैं उसी के अनुसार डेटा ऑर्डर किया गया है।

एक अन्य समाधान dictsort फ़िल्टर का उपयोग करके टेम्पलेट में डेटा को सॉर्ट करना है, यदि आपका डेटा शब्दकोशों की सूची में है:

{% regroup cities|dictsort:"country" by country as country_list %}

अन्य गुणों पर समूह बनाना

कोई भी मान्य टेम्प्लेट लुकअप रीग्राउंड टैग के लिए एक कानूनी समूहीकरण विशेषता है, जिसमें विधियाँ, विशेषताएँ, शब्दकोश कुंजियाँ और सूची आइटम शामिल हैं। उदाहरण के लिए, यदि "देश" फ़ील्ड एक वर्ग की एक विदेशी कुंजी है जिसमें "विवरण" है, तो आप इसका उपयोग कर सकते हैं:

{% regroup cities by country.description as country_list %}

या, यदि country choices साथ एक क्षेत्र है, तो इसमें एक get_FOO_display() विधि एक विशेषता के रूप में उपलब्ध होगी, जो आपको choices कुंजी के बजाय प्रदर्शन स्ट्रिंग पर समूह बनाने की अनुमति देगा:

{% regroup cities by get_country_display as country_list %}

{{ country.grouper }} अब कुंजियों के बजाय सेट किए गए choices से मूल्य फ़ील्ड प्रदर्शित करेगा।

resetcycle

पिछले cycle रीसेट करता है ताकि वह अपने अगले एनकाउंटर पर पहले आइटम से पुनः आरंभ हो। तर्कों के बिना, {% resetcycle %} रीसेट {% cycle %} टेम्पलेट में परिभाषित अंतिम {% cycle %} को रीसेट कर देगा।

उदाहरण का उपयोग:

{% for coach in coach_list %}
    <h1>{{ coach.name }}</h1>
    {% for athlete in coach.athlete_set.all %}
        <p class="{% cycle 'odd' 'even' %}">{{ athlete.name }}</p>
    {% endfor %}
    {% resetcycle %}
{% endfor %}

यह उदाहरण इस HTML को लौटाएगा:

<h1>José Mourinho</h1>
<p class="odd">Thibaut Courtois</p>
<p class="even">John Terry</p>
<p class="odd">Eden Hazard</p>

<h1>Carlo Ancelotti</h1>
<p class="odd">Manuel Neuer</p>
<p class="even">Thomas Müller</p>

ध्यान दें कि पहला खंड class="odd" साथ कैसे समाप्त होता है class="odd" और नया class="odd" से शुरू होता है। {% resetcycle %} टैग के बिना, दूसरा ब्लॉक class="even" साथ शुरू होगा।

आप नाम चक्र टैग भी रीसेट कर सकते हैं:

{% for item in list %}
    <p class="{% cycle 'odd' 'even' as stripe %} {% cycle 'major' 'minor' 'minor' 'minor' 'minor' as tick %}">
        {{ item.data }}
    </p>
    {% ifchanged item.category %}
        <h1>{{ item.category }}</h1>
        {% if not forloop.first %}{% resetcycle tick %}{% endif %}
    {% endifchanged %}
{% endfor %}

इस उदाहरण में, हमारे पास दोनों पंक्तियों की बारी-बारी से विषम / समान पंक्तियाँ और एक "प्रमुख" पंक्ति है। श्रेणी बदलने पर केवल पाँच-पंक्ति चक्र रीसेट होता है।

spaceless

HTML टैग्स के बीच व्हाट्सएप को हटाता है। इसमें टैब वर्ण और नए अंक शामिल हैं।

उदाहरण का उपयोग:

{% spaceless %}
    <p>
        <a href="foo/">Foo</a>
    </p>
{% endspaceless %}

यह उदाहरण इस HTML को लौटाएगा:

<p><a href="foo/">Foo</a></p>

केवल टैग के बीच का स्थान हटा दिया जाता है - टैग और पाठ के बीच का स्थान नहीं। इस उदाहरण में, Hello आसपास का स्थान नहीं छीना जाएगा:

{% spaceless %}
    <strong>
        Hello
    </strong>
{% endspaceless %}

templatetag

टेम्पलेट टैग्स की रचना करने के लिए प्रयुक्त वाक्यविन्यास वर्णों में से एक आउटपुट।

चूंकि टेम्प्लेट सिस्टम में "बचने" की कोई अवधारणा नहीं है, इसलिए टेम्प्लेट टैग में उपयोग किए गए बिट्स में से एक को प्रदर्शित करने के लिए, आपको {% templatetag %} टैग का उपयोग करना होगा।

तर्क बताता है कि आउटपुट के लिए कौन सा टेम्पलेट है:

तर्क आउटपुट
openblock {%
closeblock %}
openvariable {{
closevariable }}
openbrace {
closebrace }
opencomment {#
closecomment #}

नमूना उपयोग:

{% templatetag openblock %} url 'entry_list' {% templatetag closeblock %}

url

किसी दिए गए दृश्य और वैकल्पिक मापदंडों का मिलान करते हुए निरपेक्ष पथ संदर्भ (डोमेन नाम के बिना URL) देता है। परिणामी पथ में कोई विशेष वर्ण iri_to_uri() का उपयोग करके एन्कोड किया जाएगा।

यह आपके टेम्पलेट्स में हार्ड-कोड URL होने से DRY सिद्धांत का उल्लंघन किए बिना लिंक को आउटपुट करने का एक तरीका है:

{% url 'some-url-name' v1 v2 %}

पहला तर्क URL पैटर्न नाम है । यह एक उद्धृत शाब्दिक या कोई अन्य संदर्भ चर हो सकता है। अतिरिक्त तर्क वैकल्पिक हैं और अंतरिक्ष-अलग-अलग मूल्य होने चाहिए जिनका उपयोग URL में तर्क के रूप में किया जाएगा। ऊपर दिए गए उदाहरण से गुजरती स्थिति के तर्क दिए गए हैं। वैकल्पिक रूप से आप कीवर्ड सिंटैक्स का उपयोग कर सकते हैं:

{% url 'some-url-name' arg1=v1 arg2=v2 %}

एक ही कॉल में स्थिति और कीवर्ड सिंटैक्स दोनों को न मिलाएं। URLconf द्वारा आवश्यक सभी तर्क मौजूद होने चाहिए।

उदाहरण के लिए, मान लें कि आपके पास एक दृश्य है, app_views.client , जिसका URLconf क्लाइंट ID लेता है (यहां, client() व्यू फ़ाइल के अंदर एक तरीका है app_views.py )। URLconf लाइन इस तरह दिख सकती है:

path('client/<int:id>/', app_views.client, name='app-views-client')

यदि इस ऐप का URLconf इस तरह से पथ के तहत प्रोजेक्ट के URLconf में शामिल है:

path('clients/', include('project_name.app_name.urls'))

... तो, एक टेम्पलेट में, आप इस तरह इस दृश्य के लिए एक लिंक बना सकते हैं:

{% url 'app-views-client' client.id %}

टेम्पलेट टैग स्ट्रिंग /clients/client/123/ आउटपुट देगा।

ध्यान दें कि यदि आप जिस URL को उलट रहे हैं, वह मौजूद नहीं है, तो आपको एक NoReverseMatch अपवाद मिला, जो आपकी साइट को एक त्रुटि पृष्ठ प्रदर्शित करने का कारण बनेगा।

यदि आप किसी URL को प्रदर्शित किए बिना पुनः प्राप्त करना चाहते हैं, तो आप कुछ भिन्न कॉल का उपयोग कर सकते हैं:

{% url 'some-url-name' arg arg2 as the_url %}

<a href="{{ the_url }}">I'm linking to {{ the_url }}</a>

वेरिएबल सिंटैक्स द्वारा बनाए गए वेरिएबल का दायरा {% block %} है जिसमें {% url %} टैग दिखाई देता है।

यदि दृश्य गायब है, तो यह {% url ... as var %} सिंटैक्स में त्रुटि का कारण नहीं होगा। व्यवहार में आप इसका उपयोग उन विचारों से लिंक करने के लिए करेंगे जो वैकल्पिक हैं:

{% url 'some-url-name' as the_url %}
{% if the_url %}
  <a href="{{ the_url }}">Link to optional stuff</a>
{% endif %}

यदि आप एक नामांकित URL प्राप्त करना चाहते हैं, तो पूरी तरह से योग्य नाम निर्दिष्ट करें:

{% url 'myapp:view-name' %}

यह सामान्य नामांकित URL रिज़ॉल्यूशन रणनीति का पालन करेगा, जिसमें वर्तमान एप्लिकेशन के अनुसार संदर्भ द्वारा प्रदान किए गए किसी भी संकेत का उपयोग करना शामिल है।

चेतावनी

URL पैटर्न name आसपास उद्धरण देना न भूलें, अन्यथा मान को संदर्भ चर के रूप में समझा जाएगा!

verbatim

इस ब्लॉक टैग की सामग्री को प्रस्तुत करने से टेम्पलेट इंजन को रोक देता है।

एक सामान्य उपयोग जावास्क्रिप्ट टेम्पलेट परत की अनुमति देने के लिए है जो Django के सिंटैक्स से टकराता है। उदाहरण के लिए:

{% verbatim %}
    {{if dying}}Still alive.{{/if}}
{% endverbatim %}

आप एक विशिष्ट समापन टैग को भी नामित कर सकते हैं, जिससे {% endverbatim %} भाग के रूप में {% endverbatim %} के उपयोग की अनुमति मिलती है:

{% verbatim myblock %}
    Avoid template rendering via the {% verbatim %}{% endverbatim %} block.
{% endverbatim myblock %}

widthratio

बार चार्ट और इस तरह के बनाने के लिए, यह टैग किसी दिए गए मूल्य के अनुपात को अधिकतम मूल्य तक की गणना करता है, और फिर उस अनुपात को एक स्थिर पर लागू करता है।

उदाहरण के लिए:

<img src="bar.png" alt="Bar"
     height="10" width="{% widthratio this_value max_value max_width %}">

यदि this_value 175 है, तो max_value 200 है, और max_width 100 है, ऊपर के उदाहरण में छवि 88 पिक्सेल चौड़ी होगी (क्योंकि 175/200 = .875 .875 * 100 = 87.5 जो 88 तक गोल है)।

कुछ मामलों में आप एक चर में widthratio के परिणाम पर कब्जा करना चाहते हो सकता है। यह उपयोगी हो सकता है, उदाहरण के लिए, इस तरह के एक blocktrans :

{% widthratio this_value max_value max_width as width %}
{% blocktrans %}The width is: {{ width }}{% endblocktrans %}

with

एक सरल नाम के तहत एक जटिल चर को कैश करता है। "महंगी" विधि (उदाहरण के लिए, जो डेटाबेस को हिट करता है) को कई बार एक्सेस करते समय यह उपयोगी है।

उदाहरण के लिए:

{% with total=business.employees.count %}
    {{ total }} employee{{ total|pluralize }}
{% endwith %}

पॉपुलेटेड वैरिएबल (ऊपर उदाहरण में, total ) केवल {% with %} और {% endwith %} टैग्स के बीच उपलब्ध है।

आप एक से अधिक संदर्भ चर असाइन कर सकते हैं:

{% with alpha=1 beta=2 %}
    ...
{% endwith %}

ध्यान दें

पिछले अधिक वर्बोज़ प्रारूप को अभी भी समर्थित किया गया है: {% with business.employees.count as total %}

अंतर्निहित फ़िल्टर संदर्भ

add

मान को तर्क जोड़ता है।

उदाहरण के लिए:

{{ value|add:"2" }}

यदि value 4 , तो आउटपुट 6 होगा।

यह फ़िल्टर पहले पूर्णांक के लिए दोनों मानों को मिलाने की कोशिश करेगा। यदि यह विफल रहता है, तो यह वैसे भी मूल्यों को एक साथ जोड़ने का प्रयास करेगा। यह कुछ डेटा प्रकारों (स्ट्रिंग्स, सूची, आदि) पर काम करेगा और दूसरों पर विफल होगा। यदि यह विफल रहता है, तो परिणाम एक खाली स्ट्रिंग होगा।

उदाहरण के लिए, यदि हमारे पास:

{{ first|add:second }}

और first [1, 2, 3] और second [4, 5, 6] , तो आउटपुट [1, 2, 3, 4, 5, 6]

चेतावनी

पूर्णांक के लिए बाध्य किए जा सकने वाले तार सम्‍मिलित किए जाएंगे, न कि सम्‍मिलित, जैसा कि ऊपर दिए गए पहले उदाहरण में है।

addslashes

उद्धरण से पहले स्लैश जोड़ता है। उदाहरण के लिए, CSV में तार से बचने के लिए उपयोगी।

उदाहरण के लिए:

{{ value|addslashes }}

यदि value "I'm using Django" , आउटपुट "I'm using Django" होगा।

capfirst

मूल्य के पहले चरित्र को कैपिटलाइज़ करता है। यदि पहला वर्ण अक्षर नहीं है, तो इस फ़िल्टर का कोई प्रभाव नहीं है।

उदाहरण के लिए:

{{ value|capfirst }}

अगर value है "django" , तो आउटपुट होगा "Django"

center

किसी दिए गए चौड़ाई के क्षेत्र में मूल्य को केंद्र में रखता है।

उदाहरण के लिए:

"{{ value|center:"15" }}"

अगर value है "Django" , तो आउटपुट होगा " Django "

cut

दिए गए तार से आर्ग के सभी मूल्यों को निकालता है।

उदाहरण के लिए:

{{ value|cut:" " }}

अगर value है "String with spaces" , तो आउटपुट होगा "Stringwithspaces"

date

दिए गए प्रारूप के अनुसार एक तारीख का प्रारूप।

कुछ अंतरों के साथ PHP के date() फ़ंक्शन ( https://php.net/date ) के समान प्रारूप का उपयोग करता है ।

ध्यान दें

इन प्रारूप वर्णों का उपयोग टेम्पलेट के बाहर Django में नहीं किया जाता है। वे डिजाइनरों के लिए संक्रमण को कम करने के लिए PHP के साथ संगत होने के लिए डिज़ाइन किए गए थे।

उपलब्ध प्रारूप तार:

प्रारूप चरित्र विवरण उदाहरण आउटपुट
दिन
महीने का दिन, अग्रणी शून्य के साथ 2 अंक। '01' सेवा मेरे '31'
j अग्रणी शून्य के बिना महीने का दिन। '1' सेवा मेरे '31'
डी सप्ताह का दिन, पाठ, 3 अक्षर। 'Fri'
एल सप्ताह का दिन, पाठ, लंबा। 'Friday'
एस महीने के दिन के लिए अंग्रेजी क्रमिक प्रत्यय, 2 वर्ण। 'st' , 'nd' , 'rd' या 'th'
w सप्ताह का दिन, अग्रणी शून्य के बिना अंक। '0' (रविवार) से '6' (शनिवार)
z वर्ष का दिन। 0 सेवा मेरे 365
सप्ताह
डब्ल्यू वर्ष का ISO-8601 सप्ताह, सोमवार से शुरू होने वाले सप्ताह के साथ। 1 , 53
महीना
मीटर महीना, अग्रणी शून्य के साथ 2 अंक। '01' सेवा मेरे '12'
n अग्रणी शून्य के बिना महीना। '1' सेवा मेरे '12'
एम महीना, पाठ, 3 अक्षर। 'Jan'
महीना, पाठ, 3 अक्षर, लोअरकेस। 'jan'
महीना, स्थानीय विशिष्ट वैकल्पिक प्रतिनिधित्व आमतौर पर लंबी तिथि प्रतिनिधित्व के लिए उपयोग किया जाता है। 'listopada' (पोलिश लोकेल के अनुसार, विरोध किया गया 'Listopad' )
एफ महीना, पाठ, लंबा। 'January'
एन एसोसिएटेड प्रेस शैली में महीना संक्षिप्त नाम। मालिकाना विस्तार। 'Jan.' , 'Feb.' , 'March' , 'May'
टी दिए गए महीने में दिनों की संख्या। 28 सेवा मेरे 31
साल
y वर्ष, 2 अंक। '99'
Y वर्ष, 4 अंक। '1999'
एल बूलियन के लिए कि क्या यह एक लीप वर्ष है। True या False
ISO-8601 सप्ताह-नंबरिंग वर्ष, ISO-8601 सप्ताह नंबर (W) के समान है जो लीप सप्ताह का उपयोग करता है। अधिक सामान्य वर्ष प्रारूप के लिए Y देखें। '1999'
पहर
जी घंटे, अग्रणी शून्य के बिना 12-घंटे का प्रारूप। '1' सेवा मेरे '12'
जी घंटे, अग्रणी शून्य के बिना 24-घंटे का प्रारूप। '0' सेवा मेरे '23'
घंटा, 12-घंटे का प्रारूप। '01' सेवा मेरे '12'
एच घंटा, 24 घंटे का प्रारूप। '00' सेवा मेरे '23'
मैं मिनट। '00' सेवा मेरे '59'
रों सेकंड, अग्रणी शून्य के साथ 2 अंक। '00' सेवा मेरे '59'
यू माइक्रोसेकंड। 000000 सेवा मेरे 999999
'am' या 'pm' (ध्यान दें कि यह PHP के आउटपुट से थोड़ा अलग है, क्योंकि इसमें एसोसिएटेड प्रेस शैली से मेल खाने की अवधि शामिल है।) 'am'
'AM' या 'PM' 'AM'
यदि वे शून्य हैं तो समय, 12-घंटे के घंटों और मिनटों में बंद हो जाता है। मालिकाना विस्तार। '1' , '1:30'
पी समय, 12-घंटे के घंटों में, मिनट और 'am' / 'pm', मिनटों के साथ छोड़ दिया अगर वे शून्य हैं और विशेष मामला 'आधी रात' और 'दोपहर' यदि उपयुक्त हो। मालिकाना विस्तार। '1 am' , '1:30 pm' , 'midnight' , 'noon' , '12:30 pm'
समय क्षेत्र
समयक्षेत्र नाम। डेटाटाइम के आधार पर, किसी भी प्रारूप में हो सकता है, या खाली स्ट्रिंग लौटा सकता है। '' , 'GMT' , '-500' , 'US/Eastern' , आदि
मैं डेलाइट सेविंग टाइम, चाहे वह प्रभाव में हो या नहीं। '1' या '0'
हे ग्रीनविच समय में घंटों का अंतर। '+0200'
टी इस मशीन का समय क्षेत्र। 'EST' , 'MDT'
जेड सेकंड में समय क्षेत्र ऑफसेट। UTC के पश्चिम के टाइमज़ोन के लिए ऑफसेट हमेशा नकारात्मक होता है, और UTC के पूर्व के लिए हमेशा सकारात्मक होता है। -43200 सेवा मेरे 43200
दिनांक समय
सी आईएसओ 8601 प्रारूप। (नोट: अन्य फॉर्मेटर्स के विपरीत, जैसे कि "Z", "O" या "r", "c" फॉर्मेटर टाइमजोन ऑफसेट को नहीं जोड़ेगा यदि मान एक भोली डेटाइम है (देखें datetime.tzinfo )। 2008-01-02T10:30:00.000123+02:00 , या 2008-01-02T10:30:00.000123 अगर डेटाइम भोली है
आर RFC 5322 प्रारूपित तिथि। 'Thu, 21 Dec 2000 16:01:07 +0200'
यू यूनिक्स युग के बाद से (1 जनवरी 1970 00:00:00 यूटीसी)।

उदाहरण के लिए:

{{ value|date:"D d M Y" }}

यदि value कोई datetime ऑब्जेक्ट (जैसे, का परिणाम datetime.datetime.now() ) है, तो आउटपुट स्ट्रिंग होगा 'Wed 09 Jan 2008'

प्रारूप पारित कर दिया पूर्वनिर्धारित लोगों में से एक हो सकता है DATE_FORMAT , DATETIME_FORMAT , SHORT_DATE_FORMAT या SHORT_DATETIME_FORMAT , या उपरोक्त तालिका में दिखाया प्रारूप विनिर्देशक का उपयोग करता है एक कस्टम प्रारूप। ध्यान दें कि पूर्वनिर्धारित प्रारूप वर्तमान स्थान के आधार पर भिन्न हो सकते हैं।

माना जाता है कि USE_L10N है True और LANGUAGE_CODE उदाहरण के लिए "es" , तब:

{{ value|date:"SHORT_DATE_FORMAT" }}

आउटपुट स्ट्रिंग होगा "09/01/2008" ( Django के साथ शिप के रूप "SHORT_DATE_FORMAT" में es लोकेल के लिए प्रारूप निर्दिष्ट होता है "d/m/Y" )।

जब एक प्रारूप स्ट्रिंग के बिना उपयोग किया जाता है, तो DATE_FORMAT प्रारूप विनिर्देशक का उपयोग किया जाता है। पिछले उदाहरण के समान सेटिंग्स को मानते हुए:

{{ value|date }}

आउटपुट 9 de Enero de 2008 ( DATE_FORMAT के लिए फॉर्मेट स्पेसिफायर es स्थान है r'j \d\e F \d\e Y'

आप मान के पूर्ण प्रतिनिधित्व को प्रस्तुत करने के date लिए time फ़िल्टर के साथ संयोजन कर सकते हैं datetime । उदाहरण के लिए:

{{ value|date:"D d M Y" }} {{ value|time:"H:i" }}

default

यदि मान मूल्यांकन False करता है, तो दिए गए डिफ़ॉल्ट का उपयोग करता है। अन्यथा, मान का उपयोग करता है।

उदाहरण के लिए:

{{ value|default:"nothing" }}

अगर value है "" (रिक्त स्ट्रिंग), उत्पादन किया जाएगा nothing

default_if_none

यदि (और केवल यदि) मान है None , तो दिए गए डिफ़ॉल्ट का उपयोग करता है। अन्यथा, मान का उपयोग करता है।

ध्यान दें कि यदि कोई खाली स्ट्रिंग दी जाती है, तो डिफ़ॉल्ट मान का उपयोग नहीं किया जाएगा। default यदि आप खाली तारों के लिए कमबैक करना चाहते हैं तो फ़िल्टर का उपयोग करें ।

उदाहरण के लिए:

{{ value|default_if_none:"nothing" }}

अगर value है None , तो आउटपुट होगा nothing

dictsort

डिक्शनरी में दी गई कुंजी द्वारा छांटे गए शब्दकोशों और रिटर्न की सूची बनाता है।

उदाहरण के लिए:

{{ value|dictsort:"name" }}

यदि value है:

[
    {'name': 'zed', 'age': 19},
    {'name': 'amy', 'age': 22},
    {'name': 'joe', 'age': 31},
]

तब उत्पादन होगा:

[
    {'name': 'amy', 'age': 22},
    {'name': 'joe', 'age': 31},
    {'name': 'zed', 'age': 19},
]

आप अधिक जटिल चीजें भी कर सकते हैं जैसे:

{% for book in books|dictsort:"author.age" %}
    * {{ book.title }} ({{ book.author.name }})
{% endfor %}

यदि books है:

[
    {'title': '1984', 'author': {'name': 'George', 'age': 45}},
    {'title': 'Timequake', 'author': {'name': 'Kurt', 'age': 75}},
    {'title': 'Alice', 'author': {'name': 'Lewis', 'age': 33}},
]

तब उत्पादन होगा:

* Alice (Lewis)
* 1984 (George)
* Timequake (Kurt)

dictsort __getitem__() निर्दिष्ट सूचकांक पर तत्वों द्वारा सूचियों की सूची (या किसी अन्य वस्तु को लागू करने ) का आदेश भी दे सकते हैं । उदाहरण के लिए:

{{ value|dictsort:0 }}

यदि value है:

[
    ('a', '42'),
    ('c', 'string'),
    ('b', 'foo'),
]

तब उत्पादन होगा:

[
    ('a', '42'),
    ('b', 'foo'),
    ('c', 'string'),
]

आपको इंडेक्स को स्ट्रिंग के बजाय पूर्णांक के रूप में पास करना होगा। निम्नलिखित उत्पादन खाली उत्पादन:

{{ values|dictsort:"0" }}

dictsortreversed

शब्दकोशों की एक सूची लेता है और उस सूची को लौटाता है जो तर्क में दी गई कुंजी द्वारा रिवर्स क्रम में क्रमबद्ध होती है। यह उपरोक्त फ़िल्टर के समान ही काम करता है, लेकिन लौटाया गया मूल्य उल्टे क्रम में होगा।

divisibleby

True यदि मान तर्क से विभाज्य है, तो लौटाता है।

उदाहरण के लिए:

{{ value|divisibleby:"3" }}

अगर value है 21 , तो आउटपुट होगा True

escape

एक स्ट्रिंग के HTML से बच जाता है। विशेष रूप से, यह इन प्रतिस्थापनों को बनाता है:

  • < में परिवर्तित हो जाता है &lt;
  • > में परिवर्तित हो जाता है &gt;
  • ' (एकल उद्धरण) में परिवर्तित किया जाता है &#39;
  • " (डबल कोट) में परिवर्तित किया जाता है &quot;
  • & में परिवर्तित हो जाता है &amp;

escape एक वैरिएबल को लागू करने से जो सामान्य रूप से ऑटो-एस्केप होगा परिणाम पर लागू होने के परिणामस्वरूप केवल एक राउंड बच जाएगा। इसलिए ऑटो-एवरेजिंग वातावरण में भी इस फ़ंक्शन का उपयोग करना सुरक्षित है। यदि आप चाहते हैं कि कई एस्केप पास लागू हों, तो force_escape फिल्टर का उपयोग करें ।

उदाहरण के लिए, आप बंद escape होने पर फ़ील्ड पर आवेदन कर सकते हैं autoescape :

{% autoescape off %}
    {{ title|escape }}
{% endautoescape %}

escapejs

जावास्क्रिप्ट स्ट्रिंग्स में उपयोग के लिए वर्ण पात्र। यह HTML या जावास्क्रिप्ट टेम्पलेट शाब्दिक में उपयोग के लिए स्ट्रिंग को सुरक्षित नहीं बनाता है, लेकिन जावास्क्रिप्ट / JSON उत्पन्न करने के लिए टेम्पलेट्स का उपयोग करते समय आपको सिंटैक्स त्रुटियों से बचाता है।

उदाहरण के लिए:

{{ value|escapejs }}

अगर value है "testing\r\njavascript \'string" <b>escaping</b>" , तो आउटपुट होगा "testing\\u000D\\u000Ajavascript \\u0027string\\u0022 \\u003Cb\\u003Eescaping\\u003C/b\\u003E"

filesizeformat

प्रारूप (यानी एक 'मानव पठनीय' फ़ाइल आकार की तरह मूल्य '13 KB' , '4.1 MB' , '102 bytes' , आदि)।

उदाहरण के लिए:

{{ value|filesizeformat }}

अगर value 123456789 है, तो आउटपुट होगा 117.7 MB

फ़ाइल आकार और SI इकाइयाँ

कड़ाई से बोलना, filesizeformat अंतर्राष्ट्रीय प्रणाली इकाइयों के अनुरूप नहीं है जो कि बाइट के आकार की गणना 1024 की शक्तियों में की जाती है (जो यहां मामला है) जब KiB, MiB, GiB, आदि का उपयोग करने की अनुशंसा करता है। इसके बजाय, Django पारंपरिक यूनिट नामों (KB, MB, GB, आदि) का उपयोग उन नामों के अनुरूप करता है जो अधिक सामान्यतः उपयोग किए जाते हैं।

first

किसी सूची में पहला आइटम देता है।

उदाहरण के लिए:

{{ value|first }}

यदि value सूची है ['a', 'b', 'c'] , उत्पादन किया जाएगा 'a'

floatformat

जब एक तर्क के बिना उपयोग किया जाता है, तो एक फ़्लोटिंग पॉइंट नंबर को एक दशमलव स्थान पर राउंड किया जाता है - लेकिन केवल अगर कोई दशमलव भाग प्रदर्शित किया जाना है। उदाहरण के लिए:

value खाका उत्पादन
34.23234 {{ value|floatformat }} 34.2
34.00000 {{ value|floatformat }} 34
34.26000 {{ value|floatformat }} 34.3

यदि एक संख्यात्मक पूर्णांक तर्क के साथ प्रयोग किया जाता है, तो floatformat कई दशमलव स्थानों के लिए एक नंबर गोल हो जाता है। उदाहरण के लिए:

value खाका उत्पादन
34.23234 {{ value|floatformat:3 }} 34.232
34.00000 {{ value|floatformat:3 }} 34.000
34.26000 {{ value|floatformat:3 }} 34.260

विशेष रूप से उपयोगी 0 (शून्य) को तर्क के रूप में पारित कर रहा है जो निकटतम पूर्णांक तक फ्लोट को गोल करेगा।

value खाका उत्पादन
34.23234 {{ value|floatformat:"0" }} 34
34.00000 {{ value|floatformat:"0" }} 34
39.56000 {{ value|floatformat:"0" }} 40

यदि तर्क पास किया गया floatformat नकारात्मक है, तो यह कई दशमलव स्थानों के लिए एक संख्या को गोल करेगा - लेकिन केवल अगर कोई दशमलव भाग प्रदर्शित किया जाना है। उदाहरण के लिए:

value खाका उत्पादन
34.23234 {{ value|floatformat:"-3" }} 34.232
34.00000 {{ value|floatformat:"-3" }} 34
34.26000 {{ value|floatformat:"-3" }} 34.260

का उपयोग करते हुए floatformat कोई तर्क के साथ का उपयोग कर के बराबर है floatformat की एक तर्क के साथ -1

force_escape

HTML को एक स्ट्रिंग से बचने के लिए लागू होता है ( escape विवरण के लिए फ़िल्टर देखें)। यह फ़िल्टर तुरंत लागू किया जाता है और एक नया, बचा हुआ स्ट्रिंग लौटाता है। यह दुर्लभ मामलों में उपयोगी है जहां आपको कई भागने की आवश्यकता होती है या बच गए परिणामों के लिए अन्य फ़िल्टर लागू करना चाहते हैं। आम तौर पर, आप escape फ़िल्टर का उपयोग करना चाहते हैं ।

उदाहरण के लिए, यदि आप फ़िल्टर <p> द्वारा बनाए गए HTML तत्वों को पकड़ना चाहते हैं linebreaks :

{% autoescape off %}
    {{ body|linebreaks|force_escape }}
{% endautoescape %}

get_digit

एक संपूर्ण संख्या को देखते हुए, अनुरोधित अंक लौटाता है, जहां 1 सही-सबसे अंक है, 2 दूसरा-सही-सबसे अधिक अंक है, आदि अमान्य इनपुट के लिए मूल मान लौटाता है (यदि इनपुट या तर्क पूर्णांक नहीं है, या यदि तर्क 1 से कम है)। अन्यथा, आउटपुट हमेशा पूर्णांक होता है।

उदाहरण के लिए:

{{ value|get_digit:"2" }}

अगर value है 123456789 , तो आउटपुट होगा 8

iriencode

एक IRI (अंतर्राष्ट्रीयकृत संसाधन पहचानकर्ता) को एक स्ट्रिंग में परिवर्तित करता है जो URL में शामिल करने के लिए उपयुक्त है। यदि आप किसी URL में गैर-ASCII वर्ण वाले स्ट्रिंग का उपयोग करने का प्रयास कर रहे हैं तो यह आवश्यक है।

इस फ़िल्टर को एक स्ट्रिंग पर उपयोग करना सुरक्षित है जो पहले से ही urlencode फ़िल्टर के माध्यम से चला गया है ।

उदाहरण के लिए:

{{ value|iriencode }}

अगर value है "?test=1&me=2" , तो आउटपुट होगा "?test=1&amp;me=2"

join

एक स्ट्रिंग के साथ एक सूची में शामिल हो जाता है, जैसे कि पायथन str.join(list)

उदाहरण के लिए:

{{ value|join:" // " }}

यदि value सूची है ['a', 'b', 'c'] , तो आउटपुट स्ट्रिंग होगा "a // b // c"

json_script

Django 2.1 में नया:

<script> जावास्क्रिप्ट के साथ उपयोग के लिए तैयार, JSON के रूप में पायथन ऑब्जेक्ट को सुरक्षित रूप से आउटपुट करता है ।

तर्क: <script> टैग के HTML "आईडी" ।

उदाहरण के लिए:

{{ value|json_script:"hello-data" }}

यदि value शब्दकोश है {'hello': 'world'} , तो आउटपुट होगा:

<script id="hello-data" type="application/json">{"hello": "world"}</script>

परिणामी डेटा को इस तरह जावास्क्रिप्ट में एक्सेस किया जा सकता है:

var value = JSON.parse(document.getElementById('hello-data').textContent);

XSS हमलों को "<", ">" और "&" अक्षर से बचकर कम किया जाता है। उदाहरण के लिए यदि value है {'hello': 'world</script>&amp;'} , तो आउटपुट है:

<script id="hello-data" type="application/json">{"hello": "world\\u003C/script\\u003E\\u0026amp;"}</script>

यह एक सख्त सामग्री सुरक्षा नीति के साथ संगत है जो इन-पेज स्क्रिप्ट निष्पादन को प्रतिबंधित करता है। यह निष्क्रिय डेटा और निष्पादन योग्य कोड के बीच एक स्वच्छ अलगाव भी रखता है।

last

किसी सूची में अंतिम आइटम देता है।

उदाहरण के लिए:

{{ value|last }}

यदि value सूची है ['a', 'b', 'c', 'd'] , तो आउटपुट स्ट्रिंग होगा "d"

length

मान की लंबाई लौटाता है। यह स्ट्रिंग्स और सूचियों दोनों के लिए काम करता है।

उदाहरण के लिए:

{{ value|length }}

यदि value है , ['a', 'b', 'c', 'd'] या "abcd" आउटपुट होगा 4

फ़िल्टर 0 अपरिभाषित चर के लिए लौटता है ।

length_is

रिटर्न True अगर मूल्य की दूरी तर्क है, या False अन्यथा।

उदाहरण के लिए:

{{ value|length_is:"4" }}

यदि value है , ['a', 'b', 'c', 'd'] या "abcd" आउटपुट होगा True

linebreaks

उपयुक्त HTML के साथ सादे पाठ में रेखाओं के विराम; एक सिंगल न्यूलाइन एक HTML लाइन ब्रेक ( <br> ) बन जाती है और एक नई लाइन जिसके बाद एक ब्लैंक लाइन एक पैरा ब्रेक ( </p> ) बन जाती है ।

उदाहरण के लिए:

{{ value|linebreaks }}

अगर value है Joel\nis a slug , तो आउटपुट होगा <p>Joel<br>is a slug</p>

linebreaksbr

सादे पाठ के एक टुकड़े में सभी नई लाइनों को HTML लाइन ब्रेक ( <br> ) में परिवर्तित करता है ।

उदाहरण के लिए:

{{ value|linebreaksbr }}

अगर value है Joel\nis a slug , तो आउटपुट होगा Joel<br>is a slug

linenumbers

पंक्ति संख्याओं के साथ पाठ प्रदर्शित करता है।

उदाहरण के लिए:

{{ value|linenumbers }}

यदि value है:

one
two
three

उत्पादन होगा:

1. one
2. two
3. three

ljust

किसी दिए गए चौड़ाई के क्षेत्र में मान को बायां-संरेखित करता है।

तर्क: क्षेत्र का आकार

उदाहरण के लिए:

"{{ value|ljust:"10" }}"

अगर value है Django , तो आउटपुट होगा "Django "

lower

सभी लोअरकेस में एक स्ट्रिंग परिवर्तित करता है।

उदाहरण के लिए:

{{ value|lower }}

अगर value है Totally LOVING this Album! , तो आउटपुट होगा totally loving this album!

make_list

मान सूची में बदल गया। एक स्ट्रिंग के लिए, यह पात्रों की एक सूची है। पूर्णांक के लिए, तर्क एक सूची बनाने से पहले एक स्ट्रिंग को दिया जाता है।

उदाहरण के लिए:

{{ value|make_list }}

यदि value स्ट्रिंग है "Joel" , तो आउटपुट सूची होगी ['J', 'o', 'e', 'l'] । यदि value है 123 , तो आउटपुट सूची होगी ['1', '2', '3']

phone2numeric

एक फोन नंबर (संभवत: अक्षरों से युक्त) को इसके संख्यात्मक समकक्ष में परिवर्तित करता है।

इनपुट के लिए मान्य फ़ोन नंबर होना आवश्यक नहीं है। यह खुशी से किसी भी स्ट्रिंग को बदल देगा।

उदाहरण के लिए:

{{ value|phone2numeric }}

अगर value है 800-COLLECT , तो आउटपुट होगा 800-2655328

pluralize

यदि मान 1 नहीं है, तो बहुवचन प्रत्यय लौटाता है 's' । डिफ़ॉल्ट रूप से, यह प्रत्यय है ।

उदाहरण:

You have {{ num_messages }} message{{ num_messages|pluralize }}.

अगर num_messages है 1 , उत्पादन होगा You have 1 message. तो num_messages है 2 व्यवहृत किया जा सकेगा You have 2 messages.

उन शब्दों के लिए जिनके लिए एक प्रत्यय की आवश्यकता होती है 's' , आप फ़िल्टर के लिए एक पैरामीटर के रूप में एक वैकल्पिक प्रत्यय प्रदान कर सकते हैं।

उदाहरण:

You have {{ num_walruses }} walrus{{ num_walruses|pluralize:"es" }}.

उन शब्दों के लिए जो सरल प्रत्यय से नहीं मिलते हैं, आप अल्पविराम द्वारा अलग किए गए दोनों एकवचन और बहुवचन प्रत्यय को निर्दिष्ट कर सकते हैं।

उदाहरण:

You have {{ num_cherries }} cherr{{ num_cherries|pluralize:"y,ies" }}.

ध्यान दें

blocktrans अनुवादित तारों को बहुवचन करने के लिए उपयोग करें ।

pprint

चारों ओर एक आवरण pprint.pprint() - डिबगिंग के लिए, वास्तव में।

random

दी गई सूची से एक यादृच्छिक आइटम लौटाता है।

उदाहरण के लिए:

{{ value|random }}

यदि value सूची है ['a', 'b', 'c', 'd'] , तो आउटपुट हो सकता है "b"

rjust

किसी दिए गए चौड़ाई के क्षेत्र में मान को दाएं-संरेखित करें।

तर्क: क्षेत्र का आकार

उदाहरण के लिए:

"{{ value|rjust:"10" }}"

अगर value है Django , तो आउटपुट होगा " Django"

safe

आउटपुट से पहले आगे भागने वाले HTML की आवश्यकता नहीं होने के कारण एक स्ट्रिंग को चिह्नित करता है। जब ऑटोसोस्टिंग बंद हो जाता है, तो इस फ़िल्टर का कोई प्रभाव नहीं होता है।

ध्यान दें

यदि आप फ़िल्टर का पीछा कर रहे हैं, तो फ़िल्टर लागू होने के बाद safe सामग्री को फिर से असुरक्षित बना सकते हैं। उदाहरण के लिए, निम्नलिखित कोड वैरिएबल को प्रिंट करता है, जैसे:

{{ var|safe|escape }}

safeseq

safe किसी अनुक्रम के प्रत्येक तत्व को फ़िल्टर लागू करता है । अन्य फिल्टर के साथ संयोजन में उपयोगी है जो अनुक्रमों पर काम करते हैं, जैसे कि join । उदाहरण के लिए:

{{ some_list|safeseq|join:", " }}

आप safe इस मामले में सीधे फ़िल्टर का उपयोग नहीं कर सकते , क्योंकि यह अनुक्रम के व्यक्तिगत तत्वों के साथ काम करने के बजाय पहले चर को एक स्ट्रिंग में बदल देगा।

slice

सूची का एक टुकड़ा लौटाता है।

पाइथन की स्लाइसिंग के समान सिंटैक्स का उपयोग करता है। एक परिचय के लिए http://www.diveintopython3.net/native-datatypes.html#slicinglists देखें ।

उदाहरण:

{{ some_list|slice:":2" }}

अगर some_list है ['a', 'b', 'c'] , तो आउटपुट होगा ['a', 'b']

slugify

ASCII को रूपांतरित करता है। रिक्त स्थान को हाइफ़न में परिवर्तित करता है। उन वर्णों को हटा देता है जो अल्फ़ान्यूमेरिक्स, अंडरस्कोर या हाइफ़न नहीं हैं। लोअरकेस में कनवर्ट करता है। इसके अलावा व्हाईटस्पेस अग्रणी और अनुगामी।

उदाहरण के लिए:

{{ value|slugify }}

अगर value है "Joel is a slug" , तो आउटपुट होगा "joel-is-a-slug"

stringformat

तर्क के अनुसार चर को प्रारूपित करता है, एक स्ट्रिंग प्रारूपण निर्दिष्ट करता है। यह विशेषांक मुद्रण-शैली स्ट्रिंग स्वरूपण सिंटैक्स का उपयोग करता है , इस अपवाद के साथ कि प्रमुख "%" गिरा दिया गया है।

उदाहरण के लिए:

{{ value|stringformat:"E" }}

अगर value है 10 , तो आउटपुट होगा 1.000000E+01

striptags

सभी [X] HTML टैग्स को छीनने के सभी संभव प्रयास करता है।

उदाहरण के लिए:

{{ value|striptags }}

अगर value है "<b>Joel</b> <button>is</button> a <span>slug</span>" , तो आउटपुट होगा "Joel is a slug"

कोई सुरक्षा गारंटी नहीं

ध्यान दें कि striptags इसका आउटपुट HTML सुरक्षित होने के बारे में कोई गारंटी नहीं देता है, विशेष रूप से गैर वैध HTML इनपुट के साथ। तो कभी नहीं लागू safe एक करने के लिए फिल्टर striptags उत्पादन। यदि आप कुछ अधिक मजबूत देख रहे हैं, तो आप bleach पायथन लाइब्रेरी का उपयोग कर सकते हैं , विशेष रूप से इसकी clean विधि।

time

दिए गए प्रारूप के अनुसार एक समय का प्रारूप।

दिया गया प्रारूप फ़िल्टर के TIME_FORMAT समान पूर्वनिर्धारित एक या एक कस्टम प्रारूप हो सकता है date । ध्यान दें कि पूर्वनिर्धारित प्रारूप स्थानीय-निर्भर है।

उदाहरण के लिए:

{{ value|time:"H:i" }}

यदि value के बराबर है datetime.datetime.now() , तो आउटपुट स्ट्रिंग होगा "01:23"

एक और उदाहरण:

माना जाता है कि USE_L10N है True और LANGUAGE_CODE उदाहरण के लिए "de" , तब:

{{ value|time:"TIME_FORMAT" }}

आउटपुट स्ट्रिंग होगा "01:23" ( Django के साथ शिप के रूप "TIME_FORMAT" में de लोकेल के लिए प्रारूप विनिर्देशक है "H:i" )।

time फिल्टर केवल प्रारूप स्ट्रिंग में पैरामीटर है कि दिन के समय, नहीं तिथि (स्पष्ट कारणों के लिए) से संबंधित स्वीकार करेंगे। यदि आपको कोई date मान प्रारूपित करने की आवश्यकता है , तो date इसके बजाय फ़िल्टर का उपयोग करें (या time यदि आपको पूर्ण datetime मान प्रदान करने की आवश्यकता है )।

इसका एक अपवाद ऊपर नियम है: जब एक पारित कर दिया datetime संलग्न समयक्षेत्र जानकारी (एक साथ मूल्य time-zone-aware datetime उदाहरण) time फिल्टर समय क्षेत्र से संबंधित स्वीकार करेंगे प्रारूप विनिर्देशक 'e' , 'O' , 'T' और 'Z'

जब एक प्रारूप स्ट्रिंग के बिना उपयोग किया जाता है, तो TIME_FORMAT प्रारूप विनिर्देशक का उपयोग किया जाता है:

{{ value|time }}

के समान है:

{{ value|time:"TIME_FORMAT" }}

timesince

उस तिथि के बाद के समय के रूप में एक तारीख को प्रारूपित करता है (उदाहरण के लिए, "4 दिन, 6 घंटे")।

एक वैकल्पिक तर्क लेता है जो एक चर है जिसमें तुलना बिंदु के रूप में उपयोग किया जाता है (तर्क के बिना, तुलना बिंदु अब है )। उदाहरण के लिए, यदि blog_date 1 जून 2006 की मध्यरात्रि का प्रतिनिधित्व करने वाला दिनांक उदाहरण है, और 1 जून 2006 comment_date को 08:00 बजे की तारीख का उदाहरण है, तो निम्नलिखित "8 घंटे" वापस आ जाएगा

{{ blog_date|timesince:comment_date }}

ऑफसेट-भोले और ऑफसेट-अवगत डेटाटाइम्स की तुलना करने से एक रिक्त स्ट्रिंग वापस आ जाएगी।

मिनट्स का उपयोग सबसे छोटी इकाई है, और "0 मिनट" को किसी भी तारीख के लिए लौटा दिया जाएगा जो भविष्य में तुलना बिंदु के सापेक्ष है।

timeuntil

इसी के लिए timesince , को छोड़कर यह दी गई तिथि या दिनांक तक अब से समय का आकलन करता है। उदाहरण के लिए, यदि आज १ जून २००६ है और २ ९ जून २००६ conference_date को एक तारीख उदाहरण है, तो {{ conference_date|timeuntil }} "४ सप्ताह" में लौट आएगा।

एक वैकल्पिक तर्क लेता है जो तुलनात्मक बिंदु ( अब के बजाय ) के रूप में उपयोग करने की तारीख वाला एक चर है । यदि from_date 22 जून 2006 शामिल है, तो निम्नलिखित "1 सप्ताह" लौटेगा:

{{ conference_date|timeuntil:from_date }}

ऑफसेट-भोले और ऑफसेट-अवगत डेटाटाइम्स की तुलना करने से एक रिक्त स्ट्रिंग वापस आ जाएगी।

मिनट्स का उपयोग सबसे छोटी इकाई है, और "0 मिनट" को किसी भी तारीख के लिए वापस किया जाएगा जो कि तुलना बिंदु के सापेक्ष अतीत में है।

title

शब्दों को एक अपरकेस वर्ण और शेष वर्णों के साथ शुरू करके शीर्षक में एक स्ट्रिंग में परिवर्तित करता है। यह टैग "तुच्छ शब्दों" को लोअरकेस में रखने का कोई प्रयास नहीं करता है।

उदाहरण के लिए:

{{ value|title }}

अगर value है "my FIRST post" , तो आउटपुट होगा "My First Post"

truncatechars

यदि यह वर्णों की निर्दिष्ट संख्या से अधिक है, तो एक स्ट्रिंग को काट देता है। काटे गए तार एक अनुवादनीय दीर्घवृत्त अनुक्रम ("...") के साथ समाप्त हो जाएंगे।

तर्क: वर्णों की संख्या कम करने के लिए

उदाहरण के लिए:

{{ value|truncatechars:9 }}

अगर value है "Joel is a slug" , तो आउटपुट होगा "Joel i..."

truncatechars_html

की ही तरह truncatechars , सिवाय इसके कि यह HTML टैग के बारे में पता है। किसी भी टैग को स्ट्रिंग में खोला जाता है और ट्रंकेशन के तुरंत बाद बंद नहीं किया जाता है।

उदाहरण के लिए:

{{ value|truncatechars_html:9 }}

अगर value है "<p>Joel is a slug</p>" , तो आउटपुट होगा "<p>Joel i...</p>"

HTML कंटेंट में न्यूलाइन को संरक्षित किया जाएगा।

truncatewords

शब्दों की एक निश्चित संख्या के बाद एक तार काटता है।

तर्क: शब्दों की संख्या के बाद छंटनी करने के लिए

उदाहरण के लिए:

{{ value|truncatewords:2 }}

अगर value है "Joel is a slug" , तो आउटपुट होगा "Joel is ..."

स्ट्रिंग के भीतर की नई सीमाएं हटा दी जाएंगी।

truncatewords_html

की ही तरह truncatewords , सिवाय इसके कि यह HTML टैग के बारे में पता है। किसी भी टैग को स्ट्रिंग में खोला जाता है और ट्रंकेशन बिंदु से पहले बंद नहीं किया जाता है, ट्रंकेशन के तुरंत बाद बंद हो जाता है।

की तुलना में यह कम कुशल है truncatewords , इसलिए इसका उपयोग केवल तब किया जाना चाहिए जब इसे HTML पाठ पास किया जा रहा हो।

उदाहरण के लिए:

{{ value|truncatewords_html:2 }}

अगर value है "<p>Joel is a slug</p>" , तो आउटपुट होगा "<p>Joel is ...</p>"

HTML कंटेंट में न्यूलाइन को संरक्षित किया जाएगा।

unordered_list

पुनरावर्ती रूप से एक स्व-नेस्टेड सूची लेता है और एक HTML अप्रतिबंधित सूची देता है - <ul> टैग को खोलने और बंद किए बिना।

सूची को उचित प्रारूप में मान लिया गया है। उदाहरण के लिए, यदि var शामिल है ['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']] , तो {{ var|unordered_list }} वापस आ जाएगा:

<li>States
<ul>
        <li>Kansas
        <ul>
                <li>Lawrence</li>
                <li>Topeka</li>
        </ul>
        </li>
        <li>Illinois</li>
</ul>
</li>

upper

एक स्ट्रिंग को सभी अपरकेस में परिवर्तित करता है।

उदाहरण के लिए:

{{ value|upper }}

अगर value है "Joel is a slug" , तो आउटपुट होगा "JOEL IS A SLUG"

urlencode

एक URL में उपयोग के लिए एक मूल्य से बच जाता है।

उदाहरण के लिए:

{{ value|urlencode }}

अगर value है "https://www.example.org/foo?a=b&c=d" , तो आउटपुट होगा "https%3A//www.example.org/foo%3Fa%3Db%26c%3Dd"

एक वैकल्पिक तर्क जिसमें पात्रों को नहीं छोड़ा जाना चाहिए, प्रदान किया जा सकता है।

यदि प्रदान नहीं किया गया है, तो '/' वर्ण सुरक्षित माना जाता है। एक खाली स्ट्रिंग प्रदान की जा सकती है जब सभी पात्रों को बच जाना चाहिए। उदाहरण के लिए:

{{ value|urlencode:"" }}

अगर value है "https://www.example.org/" , तो आउटपुट होगा "https%3A%2F%2Fwww.example.org%2F"

urlize

पाठ में URL और ईमेल पतों को क्लिक करने योग्य लिंक में परिवर्तित करता है।

इस टेम्पलेट टैग पहले से जुड़ा हुआ लिंक पर काम करता है के साथ http:// , https:// या www. । उदाहरण के लिए, https://goo.gl/aia1t परिवर्तित हो जाएगा , लेकिन goo.gl/aia1t नहीं होगा।

यह भी डोमेन-केवल मूल उच्च स्तरीय डोमेन में से एक (में समाप्त होने वाले लिंक का समर्थन .com , .edu , .gov , .int , .mil , .net , और .org )। उदाहरण के लिए, djangoproject.com रूपांतरित हो जाता है।

लिंक में अनुगामी विराम चिह्न (अवधियां, अल्पविराम, क्लोज़-पैरेंस) और अग्रणी विराम चिह्न (प्रारंभिक परेंस) हो सकते हैं, और urlize फिर भी सही कार्य करेंगे।

उनके द्वारा लिंक किए गए लिंक urlize में एक rel="nofollow" विशेषता है।

उदाहरण के लिए:

{{ value|urlize }}

अगर value है "Check out www.djangoproject.com" , तो आउटपुट होगा "Check out <a href="http://www.djangoproject.com" rel="nofollow">www.djangoproject.com</a>"

वेब लिंक के अलावा, urlize ईमेल पतों को भी mailto: लिंक में परिवर्तित करता है । अगर value है "Send questions to [email protected]" , तो आउटपुट होगा "Send questions to <a href="mailto:[email protected]">[email protected]</a>"

urlize फिल्टर एक वैकल्पिक पैरामीटर लेता है autoescape । यदि autoescape है True , तो लिंक पाठ और URL, Django के अंतर्निहित escape फ़िल्टर का उपयोग करके बच जाएंगे । के लिए डिफ़ॉल्ट मान autoescape है True

ध्यान दें

यदि urlize उस पाठ पर लागू किया जाता है जिसमें पहले से ही HTML मार्कअप है, तो चीजें अपेक्षा के अनुरूप काम नहीं करेंगी। इस फ़िल्टर को केवल सादे पाठ पर लागू करें।

urlizetrunc

URL और ईमेल पतों को क्लिक लिंक की तरह urlize , लेकिन दिए गए वर्ण सीमा से अधिक लंबे URL को काट देता है।

तर्क: पाठ को लिंक करने वाले वर्णों की संख्या को छोटा किया जाना चाहिए, जिसमें ट्रंकेशन आवश्यक होने पर जोड़े जाने वाले दीर्घवृत्त सहित

उदाहरण के लिए:

{{ value|urlizetrunc:15 }}

अगर value है "Check out www.djangoproject.com" , तो आउटपुट होगा 'Check out <a href="http://www.djangoproject.com" rel="nofollow">www.djangopr...</a>'

जैसा कि urlize , इस फ़िल्टर को केवल सादे पाठ पर लागू किया जाना चाहिए।

wordcount

शब्दों की संख्या लौटाता है।

उदाहरण के लिए:

{{ value|wordcount }}

अगर value है "Joel is a slug" , तो आउटपुट होगा 4

wordwrap

निर्दिष्ट लाइन लंबाई पर शब्द लपेटता है।

तर्क: पाठ को लपेटने के लिए वर्णों की संख्या

उदाहरण के लिए:

{{ value|wordwrap:5 }}

यदि value है Joel is a slug , तो उत्पादन होगा:

Joel
is a
slug

yesno

मैप्स मूल्यों के लिए True , False , और (वैकल्पिक) None , तार करने के लिए "हाँ", "नहीं", "शायद", या एक कस्टम मानचित्रण अल्पविराम से अलग की सूची के रूप में पारित कर दिया, और मूल्य के हिसाब से उन तार में से एक देता है:

उदाहरण के लिए:

{{ value|yesno:"yeah,no,maybe" }}
मूल्य तर्क आउटपुट
True yes
True "yeah,no,maybe" yeah
False "yeah,no,maybe" no
None "yeah,no,maybe" maybe
None "yeah,no" no (धर्मान्तरित None करने के लिए False करता है, तो के लिए कोई मैपिंग None दिया जाता है)

अंतर्राष्ट्रीयकरण टैग और फ़िल्टर

Django टेम्पलेट में internationalization प्रत्येक पहलू को नियंत्रित करने के लिए टेम्पलेट टैग और फिल्टर प्रदान करता है । वे अनुवाद, प्रारूपण और समय क्षेत्र रूपांतरणों के बारीक नियंत्रण की अनुमति देते हैं।

i18n

यह लाइब्रेरी टेम्प्लेट में ट्रांसलेट किए गए टेक्स्ट को निर्दिष्ट करने की अनुमति देती है। इसे सक्षम करने के लिए, इसे सेट USE_I18N करें True , फिर इसे लोड करें {% load i18n %}

अंतर्राष्ट्रीयकरण देखें : टेम्पलेट कोड में

l10n

यह पुस्तकालय टेम्पलेट्स में मूल्यों के स्थानीयकरण पर नियंत्रण प्रदान करता है। आप केवल का उपयोग कर लायब्रेरी लोड करने की आवश्यकता है {% load l10n %} , लेकिन आप अक्सर सेट करेंगे USE_L10N करने के लिए True इतना है कि स्थानीयकरण डिफ़ॉल्ट रूप से सक्रिय है।

टेम्पलेट्स में स्थानीयकरण को नियंत्रित करना देखें ।

tz

यह लाइब्रेरी टेम्प्लेट में समय क्षेत्र रूपांतरणों पर नियंत्रण प्रदान करती है। जैसे l10n , आपको केवल लाइब्रेरी का उपयोग करने की आवश्यकता है {% load tz %} , लेकिन आप आमतौर पर स्थानीय समय पर रूपांतरण डिफ़ॉल्ट रूप से करने के USE_TZ लिए सेट करेंगे True

टेम्प्लेट में टाइम ज़ोन जागरूक आउटपुट देखें ।

अन्य टैग और फिल्टर लाइब्रेरी

Django कुछ अन्य टेम्प्लेट-टैग पुस्तकालयों के साथ आता है जिन्हें आपको अपनी INSTALLED_APPS सेटिंग में स्पष्ट रूप से सक्षम करना होगा और {% load %} टैग के साथ अपने टेम्पलेट में सक्षम करना होगा ।

django.contrib.humanize

डेटा के लिए "मानव स्पर्श" जोड़ने के लिए उपयोगी Django टेम्पलेट का एक सेट। django.contrib.humanize देखें ।

static

static

STATIC_ROOT Django जहाजों में static टेम्प्लेट टैग के साथ सहेजी जाने वाली स्थिर फ़ाइलों से लिंक करने के लिए। यदि django.contrib.staticfiles एप्लिकेशन इंस्टॉल किया गया है, तो टैग url() द्वारा निर्दिष्ट भंडारण की विधि का उपयोग करके फ़ाइलों की सेवा करेगा STATICFILES_STORAGE । उदाहरण के लिए:

{% load static %}
<img src="{% static "images/hi.jpg" %}" alt="Hi!">

यह मानक संदर्भ चर का उपभोग करने में भी सक्षम है, उदाहरण के लिए मान लेना एक user_stylesheet चर टेम्पलेट के लिए पारित किया गया है:

{% load static %}
<link rel="stylesheet" href="{% static user_stylesheet %}" type="text/css" media="screen">

यदि आप इसे प्रदर्शित किए बिना एक स्थिर URL प्राप्त करना चाहते हैं, तो आप कुछ भिन्न कॉल का उपयोग कर सकते हैं:

{% load static %}
{% static "images/hi.jpg" as myphoto %}
<img src="{{ myphoto }}">

Jinja2 टेम्पलेट्स का उपयोग?

जिनजा 2 के साथ टैग Jinja2 का उपयोग करने के बारे में जानकारी के लिए देखें static

get_static_prefix

आप को प्राथमिकता देनी चाहिए static टेम्पलेट टैग, लेकिन आप अधिक नियंत्रण चाहते हैं तो अधिक वास्तव में कहाँ और कैसे STATIC_URL टेम्पलेट में इंजेक्ट किया जाता है, तो आप उपयोग कर सकते हैं get_static_prefix टेम्पलेट टैग:

{% load static %}
<img src="{% get_static_prefix %}images/hi.jpg" alt="Hi!">

यदि आपको कई बार मान की आवश्यकता होती है तो अतिरिक्त प्रसंस्करण से बचने के लिए आप एक दूसरा रूप भी उपयोग कर सकते हैं:

{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

<img src="{{ STATIC_PREFIX }}images/hi.jpg" alt="Hi!">
<img src="{{ STATIC_PREFIX }}images/hi2.jpg" alt="Hello!">

get_media_prefix

पॉप के समान get_static_prefix , get_media_prefix मीडिया उपसर्ग के साथ एक टेम्पलेट चर पॉप्युलेट करता है MEDIA_URL , जैसे:

{% load static %}
<body data-media-url="{% get_media_prefix %}">

मान को किसी डेटा विशेषता में संग्रहीत करके, हम यह सुनिश्चित करते हैं कि यदि हम इसे जावास्क्रिप्ट संदर्भ में उपयोग करना चाहते हैं तो यह उचित रूप से बच गया है।

Original text