Inbyggda malltaggar och filterLink to this heading

Detta dokument beskriver Djangos inbyggda malltaggar och filter. Det rekommenderas att du använder automatisk dokumentation, om tillgängligt, eftersom detta också kommer att innehålla dokumentation för eventuella anpassade taggar eller filter som installerats.

Inbyggd taggreferensLink to this heading

autoescapeLink to this heading

Styr det aktuella auto-escaping-beteendet. Denna tagg tar antingen on eller off som argument och avgör om auto-escaping är i kraft inuti blocket. Blocket stängs med en endautoescape sluttagg.

Exempel på användning:

Django template
{% autoescape on %}
    {{ body }}
{% endautoescape %}

När automatisk eskapning används, tillämpas HTML-eskapning på allt innehåll som härrör från variabler innan resultatet placeras i utdata (men efter att eventuella filter har tillämpats). Detta motsvarar att manuellt tillämpa filtret escape på varje variabel.

De enda undantagen är variabler som redan markerats som ”säkra” från escaping. Variabler kan vara markerade som ”säkra” av koden som fyllde i variabeln, genom att tillämpa filtren safe eller escape, eller för att det är resultatet av ett tidigare filter som markerade strängen som ”säker”.

Inom ramen för inaktiverad automatisk eskapning kan kedjning av filter, inklusive escape, orsaka oväntade (men dokumenterade) resultat som följande:

Django template
{% autoescape off %}
    {{ my_list|join:", "|escape }}
{% endautoescape %}

Ovanstående kod kommer att mata ut de sammanfogade elementen i my_list utan escaping. Detta beror på att filterkedjans sekvens först kör joinmy_list (utan att tillämpa escaping på varje element eftersom autoescape är off), vilket markerar resultatet som säkert. Därefter kommer detta säkra resultat att matas till escape-filter, som inte tillämpar en andra omgång av escaping.

För att på rätt sätt undkomma varje element i en sekvens, använd filtret escapeseq:

Django template
{% autoescape off %}
    {{ my_list|escapeseq|join:", " }}
{% endautoescape %}

blockLink to this heading

Definierar ett block som kan åsidosättas av underordnade mallar. Se Mallarv för mer information.

kommentarLink to this heading

Ignorerar allt mellan {% comment %} och {% endcomment %}. En valfri kommentar kan infogas i den första taggen. Detta är t.ex. användbart när du kommenterar kod för att dokumentera varför koden inaktiverades.

Exempel på användning:

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

comment-taggar kan inte nästlas.

csrf_tokenLink to this heading

Den här taggen används för CSRF-skydd, enligt beskrivningen i dokumentationen för Cross Site Request Forgeries.

cykelLink to this heading

Producerar ett av sina argument varje gång denna tagg påträffas. Det första argumentet produceras vid det första mötet, det andra argumentet vid det andra mötet och så vidare. När alla argument är uttömda går taggen tillbaka till det första argumentet och producerar det igen.

Denna tagg är särskilt användbar i en loop:

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

Den första iterationen producerar HTML som hänvisar till klass row1, den andra till row2, den tredje till row1 igen, och så vidare för varje iteration av loopen.

Du kan också använda variabler. Om du till exempel har två mallvariabler, rowvalue1 och rowvalue2, kan du växla mellan deras värden så här:

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

Variables included in the cycle will be escaped. You can disable auto-escaping with:

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

Du kan blanda variabler och strängar:

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

I vissa fall kanske du vill hänvisa till det aktuella värdet i en cykel utan att gå vidare till nästa värde. För att göra detta ger du taggen {% cycle %} ett namn med hjälp av ”as”, så här:

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

Från och med nu kan du infoga cykelns aktuella värde var du vill i din mall genom att referera till cykelns namn som en kontextvariabel. Om du vill flytta cykeln till nästa värde oberoende av den ursprungliga cycle-taggen, kan du använda en annan cycle-tagg och ange namnet på variabeln. Så, följande mall:

Django template
<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>

skulle mata ut:

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

Du kan använda valfritt antal värden i en cycle-tagg, åtskilda med mellanslag. Värden inom enkla citattecken (') eller dubbla citattecken (") behandlas som stränglitteraler, medan värden utan citattecken behandlas som mallvariabler.

Som standard, när du använder nyckelordet as med cykeltaggen, kommer användningen av {% cycle %} som initierar cykeln själv att producera det första värdet i cykeln. Detta kan vara ett problem om du vill använda värdet i en nästlad loop eller i en inkluderad mall. Om du bara vill deklarera cykeln men inte producera det första värdet kan du lägga till nyckelordet silent som det sista nyckelordet i taggen. Till exempel:

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

Detta ger en lista med <tr> element med class alternerande mellan row1 och row2. Undermallen kommer att ha tillgång till rowcolors i sitt sammanhang och värdet kommer att matcha klassen på <tr> som omsluter den. Om nyckelordet silent skulle utelämnas, skulle row1 och row2 skickas ut som vanlig text, utanför elementet <tr>.

När nyckelordet silent används för en cykeldefinition, gäller tystnaden automatiskt för alla efterföljande användningar av den specifika cykeltaggen. Följande mall skulle ge ut ingenting, även om det andra anropet till {% cycle %} inte specificerar silent:

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

Du kan använda resetcycle-taggen för att få en {% cycle %}-tagg att starta om från sitt första värde nästa gång den påträffas.

debugLink to this heading

Skriver ut en hel del felsökningsinformation, inklusive aktuell kontext och importerade moduler. {% debug %} skriver inte ut någonting när inställningen DEBUG är False.

förlängerLink to this heading

Signalerar att denna mall utvidgar en överordnad mall.

Denna tagg kan användas på två sätt:

  • {% extends "base.html" %} (med citationstecken) använder det bokstavliga värdet "base.html" som namn på den överordnade mall som ska utökas.

  • {% extends variable %} använder värdet av variable. Om variabeln utvärderas till en sträng, kommer Django att använda den strängen som namn på den överordnade mallen. Om variabeln utvärderas till ett Template-objekt, kommer Django att använda det objektet som den överordnade mallen.

Se Arv av mall för mer information.

Normalt är mallnamnet relativt till mallinläsningsprogrammets rotkatalog. Ett strängargument kan också vara en relativ sökväg som börjar med ./ eller ../. Anta t.ex. följande katalogstruktur:

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

I template.html skulle följande sökvägar vara giltiga:

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

filterLink to this heading

Filtrerar innehållet i blocket genom ett eller flera filter. Flera filter kan anges med pipes och filter kan ha argument, precis som i variabelsyntaxen.

Observera att blocket innehåller all text mellan taggarna filter och endfilter.

Exempel på användning:

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

förstLink to this heading

Den första argumentvariabeln som inte är ”false” (dvs. existerar, inte är tom, inte är ett falskt booleskt värde och inte är ett numeriskt nollvärde) matas ut. Ger ingenting om alla variabler som skickas är ”false”.

Exempel på användning:

Django template
{% firstof var1 var2 var3 %}

Detta är likvärdigt med:

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

Du kan också använda en bokstavlig sträng som ett reservvärde om alla variabler som skickas är False:

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

Denna tagg skriver automatiskt ut variabelvärden. Du kan inaktivera auto-escaping med:

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

Eller om bara vissa variabler ska escapas kan du använda:

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

Du kan använda syntaxen {% firstof var1 var2 var3 as value %} för att lagra utdata i en variabel.

förLink to this heading

Loopar över varje objekt i en array och gör objektet tillgängligt i en kontextvariabel. Till exempel: för att visa en lista över idrottare som finns i athlete_list:

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

Du kan loopa över en lista i omvänd ordning genom att använda {% for obj in list reversed %}.

Om du behöver loopa över en lista med listor kan du packa upp värdena i varje dellista till enskilda variabler. Om ditt sammanhang till exempel innehåller en lista med (x,y)-koordinater som kallas points, kan du använda följande för att mata ut listan med punkter:

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

Detta kan också vara användbart om du behöver komma åt objekten i en ordbok. Om ditt sammanhang till exempel innehåller en ordbok data, skulle följande visa nycklarna och värdena i ordboken:

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

Tänk på att för dot-operatorn har nyckeluppslagning i en ordbok företräde framför metoduppslagning. Om ordboken data innehåller en nyckel med namnet 'items' kommer därför data.items att returnera data['items'] istället för data.items(). Undvik att lägga till nycklar som är namngivna som dictionary-metoder om du vill använda dessa metoder i en mall (items, values, keys, etc.). Läs mer om uppslagsordningen för dot-operatorn i documentation of template variables.

For-slingan ställer in ett antal variabler som är tillgängliga inom slingan:

Variabel

Beskrivning

förloop.räknare

Den aktuella iterationen av slingan (1-indexerad)

förloop.räknare0

Den aktuella iterationen av loopen (0-indexerad)

förloop.revcounter

Antalet iterationer från slutet av slingan (1-indexerad)

förloop.revcounter0

Antalet iterationer från slutet av slingan (0-indexerad)

förloop.första

True om detta är första gången genom slingan

förloop.sista

True om detta är sista gången genom slingan

forloop.length

The length of the loop

förloop.föräldraloop

För nästlade loopar är detta den loop som omger den aktuella loopen

förtomtLink to this heading

Taggen for kan innehålla en valfri klausul {% empty %} vars text visas om den angivna matrisen är tom eller inte kunde hittas:

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

Ovanstående är likvärdigt med - men kortare, renare och möjligen snabbare än - följande:

Django template
<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>

omLink to this heading

Taggen {% if %} utvärderar en variabel och om variabeln är ”sann” (dvs. existerar, inte är tom och inte är ett falskt booleskt värde) matas innehållet i blocket ut:

Django template
{% 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 %}

Om athlete_list inte är tom visas antalet deltagare i variabeln {{ athlete_list|length }} i ovanstående exempel.

Som du ser kan taggen if innehålla en eller flera klausuler av typen {% elif %}, samt en klausul av typen {% else %} som visas om alla tidigare villkor misslyckas. Dessa klausuler är valfria.

Booleska operatorerLink to this heading

if-taggar kan använda och, eller eller inte för att testa ett antal variabler eller för att negera en viss variabel:

Django template
{% 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 %}

Användning av både och och eller klausuler inom samma tagg är tillåtet, där och har högre prioritet än eller t.ex:

Django template
{% if athlete_list and coach_list or cheerleader_list %}

kommer att tolkas som:

Code
if (athlete_list and coach_list) or cheerleader_list:
    ...

Användning av faktiska parenteser i if-taggen är ogiltig syntax. Om du behöver dem för att ange företräde, bör du använda nästlade if-taggar.

if-taggar kan också använda operatorerna ==, !=, <, >, <=, >=, in, not in, is och is not som fungerar på följande sätt:

operatör ==Link to this heading

Jämlikhet. Ett exempel:

Django template
{% if somevar == "x" %}
  This appears if variable somevar equals the string "x"
{% endif %}
operatör !=Link to this heading

Ojämlikhet. Ett exempel:

Django template
{% if somevar != "x" %}
  This appears if variable somevar does not equal the string "x",
  or if somevar is not found in the context
{% endif %}
< operatörLink to this heading

Mindre än. Ett exempel:

Django template
{% if somevar < 100 %}
  This appears if variable somevar is less than 100.
{% endif %}
> operatörLink to this heading

Större än. Exempel:

Django template
{% if somevar > 0 %}
  This appears if variable somevar is greater than 0.
{% endif %}
operatorn <=Link to this heading

Mindre än eller lika med. Exempel:

Django template
{% if somevar <= 100 %}
  This appears if variable somevar is less than 100 or equal to 100.
{% endif %}
operatör >=Link to this heading

Större än eller lika med. Exempel:

Django template
{% if somevar >= 1 %}
  This appears if variable somevar is greater than 1 or equal to 1.
{% endif %}
in operatörLink to this heading

Innehåller inom. Denna operator stöds av många Python-containrar för att testa om det givna värdet finns i containern. Följande är några exempel på hur x i y kommer att tolkas:

Django template
{% 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 %}
inte i operatörLink to this heading

Inte innesluten i. Detta är negationen av operatorn in.

operatör ”ärLink to this heading

Objektets identitet. Testar om två värden är samma objekt. Exempel på detta:

Django template
{% 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 %}
är inte operatörLink to this heading

Negerad identitet för objekt. Testar om två värden inte är samma objekt. Detta är negationen av operatorn is. Exempel på detta:

Django template
{% 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 %}

FilterLink to this heading

Du kan också använda filter i if-uttrycket. Ett exempel:

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

Komplexa uttryckLink to this heading

Alla ovanstående kan kombineras för att bilda komplexa uttryck. För sådana uttryck kan det vara viktigt att veta hur operatorerna grupperas när uttrycket utvärderas - det vill säga prioritetsreglerna. Operatorernas rangordning, från lägsta till högsta, är följande:

  • eller

  • och

  • inte

  • in

  • ==, !=, <, >, <=, >=

(Detta följer Python exakt). Så, till exempel, följande komplexa if tagg:

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

…kommer att tolkas som:

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

Om du behöver olika företräde måste du använda nästlade if-taggar. Ibland är det ändå bättre för tydlighetens skull, för dem som inte känner till företrädesreglerna.

Jämförelseoperatorerna kan inte ”kedjas” som i Python eller i matematisk notation. Till exempel:, istället för att använda:

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

du bör använda:

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

ifchangedLink to this heading

Kontrollera om ett värde har ändrats sedan den senaste iterationen av en loop.

Blocktaggen {% ifchanged %} används inom en loop. Den har två möjliga användningsområden.

  1. Kontrollerar sitt eget återgivna innehåll mot dess tidigare tillstånd och visar bara innehållet om det har ändrats. Detta visar t.ex. en lista med dagar och visar bara månaden om den har ändrats:

    Django template
    <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. Om du får en eller flera variabler, kontrollera om någon variabel har ändrats. I följande exempel visas till exempel datumet varje gång det ändras, medan timmen visas om antingen timmen eller datumet har ändrats:

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

Taggen ifchanged kan också innehålla en valfri klausul {% else %} som visas om värdet inte har ändrats:

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

inkluderaLink to this heading

Läser in en mall och renderar den i det aktuella sammanhanget. Detta är ett sätt att ”inkludera” andra mallar i en mall.

The template name can either be a variable or a hardcoded (quoted) string, in either single or double quotes.

I detta exempel inkluderas innehållet i mallen "foo/bar.html":

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

Normalt är mallnamnet relativt till mallinläsningsprogrammets rotkatalog. Ett strängargument kan också vara en relativ sökväg som börjar med ./ eller ../ enligt beskrivningen i taggen extends.

I det här exemplet inkluderas innehållet i den mall vars namn finns i variabeln template_name:

Django template
{% include template_name %}

Variabeln kan också vara vilket objekt som helst med en render()-metod som accepterar en kontext. Detta gör att du kan referera till en kompilerad Template i din kontext.

Dessutom kan variabeln vara en iterabel av mallnamn, i vilket fall den första som kan laddas kommer att användas, enligt select_template().

En inkluderad mall återges i kontexten för den mall som inkluderar den. Detta exempel ger utdata "Hello, John!":

  • Kontext: variabeln person är satt till "John" och variabeln greeting är satt till "Hello".

  • Mall:

    Django template
    {% include "name_snippet.html" %}
    
  • Mallen namn_snippet.html:

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

Du kan skicka ytterligare kontext till mallen med hjälp av nyckelordsargument:

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

Om du vill att kontexten endast ska återges med de angivna variablerna (eller inga variabler alls) använder du alternativet only. Inga andra variabler är tillgängliga för den inkluderade mallen:

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

LaddaLink to this heading

Läser in en uppsättning anpassade malltaggar.

Exempelvis skulle följande mall ladda alla taggar och filter som är registrerade i somelibrary och otherlibrary som finns i paketet package:

Django template
{% load somelibrary package.otherlibrary %}

Du kan också selektivt ladda enskilda filter eller taggar från ett bibliotek med hjälp av argumentet from. I det här exemplet laddas malltaggarna/-filtren med namnen foo och bar från somelibrary:

Django template
{% load foo bar from somelibrary %}

Se Anpassade tagg- och filterbibliotek för mer information.

loremLink to this heading

Visar slumpmässig latinsk text av typen ”lorem ipsum”. Detta är användbart för att tillhandahålla exempeldata i mallar.

Användning:

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

Taggen {% lorem %} kan användas med noll, ett, två eller tre argument. Argumenten är:

Argument

Beskrivning

antal

Ett tal (eller en variabel) som innehåller antalet stycken eller ord som ska genereras (standard är 1).

metod

Antingen w för ord, p för HTML-stycken eller b för styckeblock i klartext (standard är b).

slumpmässig

Ordet random, som om det anges, inte använder det vanliga stycket (”Lorem ipsum dolor sit amet…”) vid generering av text.

Exempel:

  • {% lorem %} ger ett vanligt ”lorem ipsum”-stycke.

  • {% lorem 3 p %} ger ut det vanliga ”lorem ipsum”-stycket och två slumpmässiga stycken, vart och ett inslaget i HTML-taggen <p>.

  • {% lorem 2 w random %} kommer att mata ut två slumpmässiga latinska ord.

nuLink to this heading

Visar aktuellt datum och/eller aktuell tid i ett format som överensstämmer med den angivna strängen. En sådan sträng kan innehålla formatspecificerande tecken enligt beskrivningen i filteravsnittet date.

Exempel:

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

Observera att du kan backslash-escape en formatsträng om du vill använda det ”råa” värdet. I det här exemplet är både ”o” och ”f” backslash-escaped, eftersom de annars är formatsträngar som visar år respektive tid:

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

Detta skulle visas som ”Det är den 4 september”.

Du kan också använda syntaxen {% now "Y" as current_year %} för att lagra utdata (som en sträng) i en variabel. Detta är användbart om du vill använda {% now %} inuti en malltagg som till exempel blocktranslate:

Django template
{% now "Y" as current_year %}
{% blocktranslate %}Copyright {{ current_year }}{% endblocktranslate %}

partialLink to this heading

Renders a template fragment that was defined with partialdef, inserting the matching partial at this location.

Användning:

Django template
{% partial partial_name %}

The partial_name argument is the name of the template fragment to render.

In the following example, a partial named button is defined and then rendered three times:

Django template
{% partialdef button %}
    <button>Submit</button>
{% endpartialdef %}

{% partial button %}
{% partial button %}
{% partial button %}

partialdefLink to this heading

Defines a reusable template fragment that can be rendered multiple times within the same template or accessed directly via template loading or inclusion.

Användning:

Django template
{% partialdef partial_name %}
    {# Reusable content. #}
{% endpartialdef %}

The partial_name argument is required and must be a valid template identifier.

In the following example, a new fragment named card is defined:

Django template
{% partialdef card %}
    <div class="card">
        <h3>{{ title }}</h3>
        <p>{{ content }}</p>
    </div>
{% endpartialdef %}

This partial can then be rendered using the partial tag:

Django template
{% partial card %}
{% partial card %}

To render a fragment immediately in place, use the inline option. The partial is still stored and can be reused later.

frågeställningLink to this heading

Skickar ut en URL-kodad formaterad frågesträng baserat på de angivna parametrarna.

This tag accepts positional arguments, which must be mappings (such as QueryDict or dict). If no positional arguments are provided, request.GET is used as the default to construct the query string.

Positional arguments are processed sequentially, while keyword arguments are treated as key-value pairs, applied last. Later arguments take precedence over earlier ones, ensuring the most recent pairs are reflected in the final result.

The result always includes a leading "?" since this tag is mainly used for links, and an empty result could prevent the page from reloading as expected.

Grundläggande användningLink to this heading

Django template
{% querystring %}

Outputs the current query string verbatim. So if the query string in the request is ?color=green, the output would be ?color=green. If the current query string is empty, the output will be ?.

Django template
{% querystring size="M" %}

Skriver ut den aktuella frågesträngen med tillägg av parametern size. I enlighet med föregående exempel skulle utdata vara ?color=green&size=M.

Inställning av objektLink to this heading

Django template
{% querystring color="red" size="S" %}

Lägger till eller ändrar parametrar i frågesträngen. Varje nyckelordsargument läggs till i frågesträngen och ersätter alla befintliga värden för den nyckeln. Om den aktuella frågesträngen till exempel är ?color=green, blir resultatet ?color=red&size=S.

Ta bort objektLink to this heading

Django template
{% querystring color=None %}

Om du anger None som värde tas parametern bort från frågesträngen. Om den aktuella frågesträngen till exempel är ?color=green&size=M, blir utdata ?size=M.

Hantering av listorLink to this heading

Django template
{% querystring color=my_list %}

Om my_list är ["red", "blue"] blir utdata ?color=red&color=blue, vilket bevarar liststrukturen i frågesträngen.

Customizing the base QueryDictLink to this heading

You can pass custom QueryDict or dict instances as positional arguments to replace request.GET. When multiple arguments are provided, key-value pairs from later arguments take precedence over earlier ones.

For example, if my_query_dict is <QueryDict: {'color': ['blue'], 'size': ['S']}> and my_dict is {'color': 'orange', 'fabric': 'silk', 'type': 'dress'}, this outputs ?color=orange&size=S&fabric=silk.

Django template
{% querystring my_query_dict my_dict size="S" type=None %}

If all keys are removed by setting them to None, this outputs ?:

Django template
{% querystring my_query_dict my_dict color=None size=None fabric=None type=None %}

Similarly, if all positional arguments are empty and keyword arguments do not contribute any new params, the output will also be ?.

Dynamisk användningLink to this heading

Ett vanligt exempel på användning av denna tagg är att bevara den aktuella frågesträngen när en resultatsida visas, samtidigt som en länk till nästa och föregående resultatsida läggs till. Om paginatorn till exempel befinner sig på sidan 3 och den aktuella frågesträngen är ?color=blue&size=M&page=3, skulle följande kod ge ?color=blue&size=M&page=4:

Django template
{% querystring page=page.next_page_number %}

Du kan också lagra värdet i en variabel. Om du t.ex. behöver flera länkar till samma sida kan du definiera den som:

Django template
{% querystring page=page.next_page_number as next_page %}

omgrupperingLink to this heading

Omgrupperar en lista med likadana objekt efter ett gemensamt attribut.

Denna komplexa tagg illustreras bäst med hjälp av ett exempel: säg att cities är en lista över städer som representeras av ordböcker som innehåller nycklarna "name", "population" och "country":

Python
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"},
]

…och du vill visa en hierarkisk lista som är sorterad efter land, så här:

  • Indien

    • Mumbai: 19.000.000

    • Calcutta: 15,000,000

  • USA

    • New York: 20.000.000

    • Chicago: 7.000.000

  • Japan

    • Tokyo: 33,000,000

Du kan använda taggen {% regroup %} för att gruppera listan över städer efter land. Följande utdrag av mallkod skulle åstadkomma detta:

Django template
{% 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>

Låt oss gå igenom det här exemplet. {% regroup %} tar tre argument: listan du vill omgruppera, attributet som ska grupperas efter och namnet på den resulterande listan. Här omgrupperar vi listan cities med attributet country och kallar resultatet country_list.

{% regroup %} produces a list (in this case, country_list) of group objects. Group objects are instances of namedtuple() with two fields:

  • grouper – objektet som grupperades av (t.ex. strängen ”India” eller ”Japan”).

  • list – en lista över alla objekt i denna grupp (t.ex. en lista över alla städer med country=’India’).

Because {% regroup %} produces namedtuple() objects, you can also write the previous example as:

Django template
{% 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>

Observera att {% regroup %} inte ordnar sina indata! Vårt exempel bygger på det faktum att listan cities från början var ordnad efter country. Om listan cities inte ordnade sina medlemmar efter country skulle omgrupperingen naivt nog visa mer än en grupp för ett enda land. Säg till exempel att listan cities var inställd på detta (notera att länderna inte är grupperade tillsammans):

Python
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"},
]

Med denna indata för cities skulle exemplet {% regroup %} mallkod ovan resultera i följande utdata:

  • Indien

    • Mumbai: 19.000.000

  • USA

    • New York: 20.000.000

  • Indien

    • Calcutta: 15,000,000

  • USA

    • Chicago: 7.000.000

  • Japan

    • Tokyo: 33,000,000

Den enklaste lösningen på detta problem är att i visningskoden se till att data är ordnade enligt hur du vill visa dem.

En annan lösning är att sortera data i mallen med hjälp av filtret dictsort, om data finns i en lista med ordböcker:

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

Gruppering på andra fastigheterLink to this heading

Alla giltiga malluppslagningar är ett lagligt grupperingsattribut för regroup-taggen, inklusive metoder, attribut, ordboksnycklar och listobjekt. Om t.ex. fältet ”country” är en främmande nyckel till en klass med attributet ”description”, kan du använda:

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

Eller, om country är ett fält med choices, kommer det att ha en get_FOO_display()-metod tillgänglig som ett attribut, så att du kan gruppera på visningssträngen snarare än choices-nyckeln:

Django template
{% regroup cities by get_country_display as country_list %}

{{ country.grouper }} kommer nu att visa värdefälten från uppsättningen choices i stället för nycklarna.

återställ cykelLink to this heading

Återställer en tidigare cycle så att den börjar om från sitt första objekt vid nästa möte. Utan argument kommer {% resetcycle %} att återställa den sista {% cycle %} som definierats i mallen.

Exempel på användning:

Django template
{% 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 %}

Detta exempel skulle returnera denna HTML:

Html
<h1>Gareth</h1>
<p class="odd">Harry</p>
<p class="even">John</p>
<p class="odd">Nick</p>

<h1>John</h1>
<p class="odd">Andrea</p>
<p class="even">Melissa</p>

Lägg märke till hur det första blocket slutar med class="odd" och det nya börjar med class="odd". Utan taggen {% resetcycle %} skulle det andra blocket börja med class="even".

Du kan också återställa namngivna cykeltaggar:

Django template
{% 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 %}

I det här exemplet har vi både de omväxlande udda/jämna raderna och en ”stor” rad var femte rad. Endast cykeln med fem rader återställs när en kategori ändras.

”rymdlösLink to this heading

Tar bort blanksteg mellan HTML-taggar. Detta inkluderar tabbtecken och nya linjer.

Exempel på användning:

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

Detta exempel skulle returnera denna HTML:

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

Endast mellanrum mellan taggar tas bort - inte mellanrum mellan taggar och text. I det här exemplet kommer inte utrymmet runt Hello att tas bort:

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

templatetagLink to this heading

Skriver ut ett av de syntaxtecken som används för att komponera malltaggar.

Mallsystemet har inget koncept för att ”undkomma” enskilda tecken. Du kan dock använda taggen {% templatetag %} för att visa en av malltaggens teckenkombinationer.

Argumentet talar om vilken mallbit som ska matas ut:

Argument

Utgångar

öppen spärr

{%

stäng block

%}

öppenvariabel

{{

”Stäng variabeln

}}

Öppen skena

{

”Stäng skenan

}

öppen kommentar

{#

”Stäng kommentaren

#}

Exempel på användning:

Django template
The {% templatetag openblock %} characters open a block.

Se även taggen verbatim för ett annat sätt att inkludera dessa tecken.

urlLink to this heading

Returnerar en absolut sökvägsreferens (en URL utan domännamn) som matchar en given vy och valfria parametrar. Eventuella specialtecken i den resulterande sökvägen kommer att kodas med iri_to_uri().

This is a way to output links without violating the DRY principle by having to hardcode URLs in your templates:

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

Det första argumentet är en URL-mönsternamn. Det kan vara en citerad bokstav eller någon annan kontextvariabel. Ytterligare argument är valfria och bör vara mellanslagsseparerade värden som kommer att användas som argument i URL:en. Exemplet ovan visar hur man skickar positionella argument. Alternativt kan du använda nyckelordssyntax:

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

Blanda inte både positionell syntax och nyckelordssyntax i ett och samma anrop. Alla argument som krävs av URLconf ska finnas med.

Anta till exempel att du har en vy, app_views.client, vars URLconf tar ett klient-ID (här är client() en metod i vyfilen app_views.py). URLconf-raden kan se ut så här:

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

Om den här appens URLconf inkluderas i projektets URLconf under en sökväg som denna:

Python
path("clients/", include("project_name.app_name.urls"))

…sedan, i en mall, kan du skapa en länk till den här vyn så här:

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

Malltaggen kommer att mata ut strängen /clients/client/123/.

Observera att om URL:en som du vänder inte finns, kommer du att få ett NoReverseMatch undantag, vilket kommer att leda till att din webbplats visar en felsida.

Om du vill hämta en URL utan att visa den kan du använda ett lite annorlunda anrop:

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

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

Omfattningen av den variabel som skapas med syntaxen as var är det {% block %} i vilket taggen {% url %} förekommer.

Denna syntax {% url ... as var %} kommer inte att orsaka ett fel om vyn saknas. I praktiken kommer du att använda detta för att länka till vyer som är valfria:

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

Om du vill hämta en URL med namnområde anger du det fullständigt kvalificerade namnet:

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

Detta kommer att följa den normala namespaced URL resolution strategy, inklusive att använda eventuella ledtrådar som tillhandahålls av sammanhanget om den aktuella applikationen.

verbatimLink to this heading

Stoppar mallmotorn från att rendera innehållet i denna blocktagg.

En vanlig användning är att tillåta ett JavaScript-mallskikt som kolliderar med Djangos syntax. Ett exempel:

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

Du kan också ange en specifik avslutande tagg, vilket gör det möjligt att använda {% endverbatim %} som en del av det orenderade innehållet:

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

breddförhållandeLink to this heading

För att skapa stapeldiagram och liknande beräknar den här taggen förhållandet mellan ett givet värde och ett maxvärde och tillämpar sedan förhållandet på en konstant.

Till exempel:

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

Om this_value är 175, max_value är 200 och max_width är 100 kommer bilden i exemplet ovan att vara 88 pixlar bred (eftersom 175/200 = 0,875; 0,875 * 100 = 87,5 som avrundas uppåt till 88).

I vissa fall kanske du vill fånga resultatet av widthratio i en variabel. Det kan till exempel vara användbart i en blocktranslate som denna:

Django template
{% widthratio this_value max_value max_width as width %}
{% blocktranslate %}The width is: {{ width }}{% endblocktranslate %}

”medLink to this heading

Cachelagrar en komplex variabel under ett enklare namn. Detta är användbart när man använder en ”dyr” metod (t.ex. en metod som slår i databasen) flera gånger.

Till exempel:

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

Den ifyllda variabeln (i exemplet ovan total) är endast tillgänglig mellan taggarna {% with %} och {% endwith %}.

Du kan tilldela mer än en kontextvariabel:

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

Inbyggd filterreferensLink to this heading

addLink to this heading

Lägger till argumentet till värdet.

Till exempel:

Django template
{{ value|add:"2" }}

Om värde är 4, blir utdata 6.

Detta filter kommer först att försöka tvinga båda värdena till heltal. Om detta misslyckas försöker det ändå lägga ihop värdena. Detta kommer att fungera på vissa datatyper (strängar, listor etc.) och misslyckas på andra. Om det misslyckas blir resultatet en tom sträng.

Till exempel:, om vi har:

Django template
{{ first|add:second }}

och först är [1, 2, 3] och andra är [4, 5, 6], så blir utdata [1, 2, 3, 4, 5, 6].

addslashesLink to this heading

Lägger till snedstreck före citattecken. Användbart för att undkomma strängar i CSV, till exempel.

Till exempel:

Django template
{{ value|addslashes }}

Om värde är "Jag använder Django", kommer utdata att vara "Jag använder Django".

capfirstLink to this heading

Gör det första tecknet i värdet till en stor bokstav. Om det första tecknet inte är en bokstav har detta filter ingen effekt.

Till exempel:

Django template
{{ value|capfirst }}

Om värde är "django", kommer utdata att vara "Django".

centerLink to this heading

Centrerar värdet i ett fält med en given bredd.

Till exempel:

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

Om värde är "Django", kommer utdata att vara "     Django".

klippLink to this heading

Tar bort alla värden av arg från den angivna strängen.

Till exempel:

Django template
{{ value|cut:" " }}

Om värde är "Sträng med mellanslag", kommer utdata att vara "Strängmed mellanslag".

datumLink to this heading

Formaterar ett datum enligt det angivna formatet.

Använder ett liknande format som PHP:s date()-funktion med några skillnader.

Tillgängliga formatsträngar:

Format tecken

Beskrivning

Exempel utdata

Dag

d

Månadsdag, 2 siffror med inledande nollor.

'01' till '31'

j

Dag i månaden utan inledande nollor.

1 januari till 31 december

D

Veckodag, textuell, 3 bokstäver.

'Fri'

l

Veckodag, textuell, lång.

”Fredag

S

Engelskt ordinalsuffix för dag i månaden, 2 tecken.

'st', 'nd', 'rd' eller 'th'

w

Veckodag, siffror utan inledande nollor.

'0' (söndag) till '6' (lördag)

z

Dag på året.

1 till 366

Vecka

W

ISO-8601 veckonummer för året, med veckor som börjar på måndag.

1, 53

Månad

m

Månad, 2 siffror med inledande nollor.

'01' till '12'

n

Månad utan inledande nollor.

”1” till ”12

M

Månad, textuell, 3 bokstäver.

”Jan

b

Månad, text, 3 bokstäver, gemener.

jan

E

Månad, lokalspecifik alternativ representation som vanligtvis används för lång datumrepresentation.

'listopada (för polsk lokal, i motsats till 'Listopad)

F

Månad, textuell, lång.

'Januari'

N

Månadsförkortning i Associated Press-stil. Proprietär förlängning.

”januari”, ”februari”, ”mars”, ”maj

t

Antal dagar i den angivna månaden.

28 till 31

År

y

År, 2 siffror med inledande nollor.

'00' till '99'

Y

År, 4 siffror med inledande nollor.

'0001', …, '1999', …, '9999'

L

Boolean för om det är ett skottår.

True eller False

o

ISO-8601 veckonumrerat år, motsvarande ISO-8601 veckonummer (W) som använder skottveckor. Se Y för det mer vanliga årsformatet.

'1999'

Tid

g

Timme, 12-timmarsformat utan inledande nollor.

”1” till ”12

G

Timme, 24-timmarsformat utan inledande nollor.

”0” till ”23

h

Timme, 12-timmarsformat.

'01' till '12'

H

Timme, 24 timmars format.

'00' till '23'

i

Protokoll.

'00' till '59'

s

Sekunder, 2 siffror med inledande nollor.

'00' till '59'

u

Mikrosekunder.

000000 till 999999

a

'a.m.' eller 'p.m.' (Observera att detta är något annorlunda än PHP:s utdata, eftersom det innehåller punkter för att matcha Associated Press stil)

'a.m.'

A

'AM' eller 'PM'.

'AM'

f

Tid, i 12-timmars timmar och minuter, med minuter utelämnade om de är noll. Proprietär förlängning.

'1', '1:30'

P

Tid, i 12-timmarstimmar, minuter och ”a.m.”/”p.m.”, med minuter utelämnade om de är noll och specialfallsträngarna ”midnight” och ”noon” i förekommande fall. Proprietär förlängning.

1:00, 1:30, Midnatt, Middag, 12:30

Timezon

e

Namn på tidszon. Kan vara i vilket format som helst eller returnera en tom sträng, beroende på datatiden.

'', 'GMT', '-500', 'US/Eastern', etc.

I

Sommartid, oavsett om den är i kraft eller inte.

'1' eller '0'

O

Skillnad mot Greenwich-tid i timmar.

'+0200'

T

Tidszon för denna maskin.

'EST, 'MDT

Z

Tidszonsförskjutning i sekunder. Förskjutningen för tidszoner väster om UTC är alltid negativ och för tidszoner öster om UTC är den alltid positiv.

-43200 till 43200

Datum/Tid

c

ISO 8601-format. (Obs: till skillnad från andra formaterare, t.ex. ”Z”, ”O” eller ”r”, kommer formateraren ”c” inte att lägga till tidszonsförskjutning om värdet är en naiv datetime (se datetime.tzinfo).

2008-01-02T10:30:00.000123+02:00, eller 2008-01-02T10:30:00.000123 om datatiden är naiv

r

RFC 5322 formatted date.

'Thu, 21 Dec 2000 16:01:07 +0200'

U

Sekunder sedan Unix-epoken (1 januari 1970 00:00:00 UTC).

Till exempel:

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

If value is a datetime object (e.g., the result of datetime.datetime.now()), the output will be the string 'Wed 09 Jan 2008'.

Det format som skickas kan vara ett av de fördefinierade DATE_FORMAT, DATETIME_FORMAT, SHORT_DATE_FORMAT eller SHORT_DATETIME_FORMAT, eller ett eget format som använder formatspecifikationerna i tabellen ovan. Observera att fördefinierade format kan variera beroende på aktuell lokal.

Om man antar att LANGUAGE_CODE till exempel är "es", då för:

Django template
{{ value|date:"SHORT_DATE_FORMAT" }}

skulle utdata vara strängen "09/01/2008" (formatspecifikationen "SHORT_DATE_FORMAT" för es locale som levereras med Django är "d/m/Y").

När den används utan en formatsträng används formatspecifikationen DATE_FORMAT. Med samma inställningar som i föregående exempel:

Django template
{{ value|date }}

ger ut 9 de Enero de 2008 (formatspecifikationen DATE_FORMAT för es-land är r'j \d\e F \d\e Y'). Både ”d” och ”e” är förslutna med backslash, eftersom de annars är formatsträngar som visar dagen respektive tidszonens namn.

Du kan kombinera date med filtret time för att återge en fullständig representation av ett datetime-värde. T.ex:

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

standardLink to this heading

Om värdet utvärderas till False används det angivna standardvärdet. I annat fall används värdet.

Till exempel:

Django template
{{ value|default:"nothing" }}

Om value är "" (den tomma strängen) blir utdata nothing.

standard_if_noneLink to this heading

Om (och endast om) värdet är None, används det angivna standardvärdet. I annat fall används värdet.

Observera att om en tom sträng anges kommer standardvärdet inte att användas. Använd filtret default om du vill använda en reservfunktion för tomma strängar.

Till exempel:

Django template
{{ value|default_if_none:"nothing" }}

Om värde är None blir utdata ingenting.

DikteringsortLink to this heading

Tar en lista med lexikon och returnerar listan sorterad efter den nyckel som anges i argumentet.

Till exempel:

Django template
{{ value|dictsort:"name" }}

Om värde är:

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

så skulle utmatningen vara:

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

Du kan också göra mer komplicerade saker som:

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

Om böcker är:

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

så skulle utmatningen vara:

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

dictsort kan också ordna en lista med listor (eller något annat objekt som implementerar __getitem__())) efter element vid angivet index. Till exempel:

Django template
{{ value|dictsort:0 }}

Om värde är:

Python
[
    ("a", "42"),
    ("c", "string"),
    ("b", "foo"),
]

så skulle utmatningen vara:

Python
[
    ("a", "42"),
    ("b", "foo"),
    ("c", "string"),
]

Du måste skicka indexet som ett heltal i stället för en sträng. Följande ger tom utdata:

Django template
{{ values|dictsort:"0" }}

Ordning efter element vid angivet index stöds inte för lexikon.

Domslut omvändaLink to this heading

Tar en lista med lexikon och returnerar listan sorterad i omvänd ordning efter den nyckel som anges i argumentet. Detta fungerar på exakt samma sätt som ovanstående filter, men det returnerade värdet kommer att vara i omvänd ordning.

delbar genomLink to this heading

Returnerar True om värdet är delbart med argumentet.

Till exempel:

Django template
{{ value|divisibleby:"3" }}

Om värde är 21 blir utdata True.

flyktLink to this heading

Escapar en strängs HTML. Specifikt gör den dessa utbyten:

  • < konverteras till &lt;

  • > konverteras till &gt;

  • ' (enkelt citattecken) konverteras till &#x27;

  • " (dubbelcitat) konverteras till &quot;

  • & konverteras till &amp;

Om du använder escape på en variabel som normalt skulle ha automatisk escaping på resultatet kommer det bara att resultera i en omgång av escaping. Så det är säkert att använda den här funktionen även i miljöer med automatisk escaping. Om du vill att flera escapingpass ska tillämpas, använd filtret force_escape.

Du kan t.ex. använda escape på fält när autoescape` är avstängt:

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

escapejsLink to this heading

Escapar tecken för användning som en hel JavaScript-sträng, inom enkla eller dubbla citattecken, enligt nedan. Detta filter gör inte strängen säker för användning i ”JavaScript template literals” (JavaScript backtick syntax). Alla andra användningsområden som inte anges ovan stöds inte. Det rekommenderas generellt att data skickas med hjälp av HTML-attributen data- eller filtret json_script, snarare än i inbäddad JavaScript.

Till exempel:

Django template
<script>
let myValue = '{{ value|escapejs }}'

escapeseqLink to this heading

Tillämpar filtret escape på varje element i en sekvens. Används tillsammans med andra filter som arbetar med sekvenser, t.ex. join. Till exempel:

Django template
{% autoescape off %}
    {{ my_list|escapeseq|join:", " }}
{% endautoescape %}

filstorleksformatLink to this heading

Formaterar värdet som en ”mänskligt läsbar” filstorlek (t.ex. '13 KB', '4,1 MB', '102 bytes', etc.).

Till exempel:

Django template
{{ value|filesizeformat }}

Om värde är 123456789, skulle utdata vara 117.7 MB.

förstLink to this heading

Returnerar det första objektet i en lista.

Till exempel:

Django template
{{ value|first }}

Om värde är listan ['a', 'b', 'c'], blir utdata 'a'.

flatformatLink to this heading

När det används utan argument avrundas ett flyttal till en decimal - men bara om det finns en decimaldel som ska visas. Till exempel:

värde

Mall

Utmatning

34.23234

{{ value|floatformat }}

34.2

34.00000

{{ value|floatformat }}

34

34.26000

{{ value|floatformat }}

34.3

Om floatformat används med ett numeriskt heltalsargument avrundas ett tal till så många decimaler. Till exempel:

värde

Mall

Utmatning

34.23234

{{ value|floatformat:3 }}

34.232

34.00000

{{ value|floatformat:3 }}

34.000

34.26000

{{ value|floatformat:3 }}

34.260

Särskilt användbart är att ange 0 (noll) som argument, vilket gör att floaten avrundas till närmaste heltal.

värde

Mall

Utmatning

34.23234

{{ value|floatformat:"0" }}

34

34.00000

{{ value|floatformat:"0" }}

34

39.56000

{{ value|floatformat:"0" }}

40

Om argumentet som skickas till floatformat är negativt, kommer det att avrunda ett tal till så många decimaler - men bara om det finns en decimaldel som ska visas. Till exempel:

värde

Mall

Utmatning

34.23234

{{ value|floatformat:"-3" }}

34.232

34.00000

{{ value|floatformat:"-3" }}

34

34.26000

{{ value|floatformat:"-3" }}

34.260

Om argumentet som skickas till floatformat har suffixet g, kommer det att tvinga fram gruppering med THOUSAND_SEPARATOR för den aktiva locale. Till exempel:, när den aktiva locale är en (engelska):

värde

Mall

Utmatning

34232.34

{{ value|floatformat:"2g" }}

34,232.34

34232.06

{{ value|floatformat:"g" }}

34,232.1

34232.00

{{ value|floatformat:"-3g" }}

34,232

Utdata lokaliseras alltid (oberoende av taggen {% localize off %}) såvida inte argumentet som skickas till floatformat har suffixet u, vilket tvingar fram en inaktivering av lokaliseringen. Till exempel: när det aktiva språket är pl (polska):

värde

Mall

Utmatning

34.23234

{{ value|floatformat:"3" }}

34,232

34.23234

{{ value|floatformat:"3u" }}

34.232

Att använda floatformat utan argument är likvärdigt med att använda floatformat med argumentet -1.

forcera_utgångLink to this heading

Tillämpar HTML-escape på en sträng (se filtret escape för mer information). Det här filtret tillämpas omedelbart och returnerar en ny, escapad sträng. Detta är användbart i de sällsynta fall där du behöver flera eskapader eller vill tillämpa andra filter på de eskapade resultaten. Normalt sett bör du använda filtret escape.

Om du t.ex. vill fånga upp HTML-elementen <p> som skapats av filtret linebreaks:

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

get_digitLink to this heading

Med ett heltal returneras den begärda siffran, där 1 är siffran längst till höger, 2 är den näst längst till höger osv. Returnerar det ursprungliga värdet för ogiltig indata (om indata eller argument inte är ett heltal, eller om argumentet är mindre än 1). I annat fall är utdata alltid ett heltal.

Till exempel:

Django template
{{ value|get_digit:"2" }}

Om värde är 123456789, kommer utdata att vara 8.

irienkodLink to this heading

Konverterar en IRI (Internationalized Resource Identifier) till en sträng som är lämplig att inkludera i en URL. Detta är nödvändigt om du försöker använda strängar som innehåller icke-ASCII-tecken i en URL.

Det är säkert att använda detta filter på en sträng som redan har gått igenom filtret urlencode.

Till exempel:

Django template
{{ value|iriencode }}

Om värde är "?test=I Django", kommer utdata att vara "?test=I%20%E2%99%A5%20Django".

”AnslutaLink to this heading

Sammanfogar en lista med en sträng, som Pythons str.join(list)

Till exempel:

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

Om value är listan ['a', 'b', 'c'], blir utdata strängen "a // b // c".

json_scriptLink to this heading

Skickar ut ett Python-objekt på ett säkert sätt som JSON, inslaget i en tagg <script>, redo att användas med JavaScript.

Argument: Det valfria HTML-”id” för taggen <script>.

Till exempel:

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

Om värde är ordlistan {'hello': 'world'}, blir utdata följande:

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

Den resulterande datan kan nås i JavaScript på följande sätt:

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

XSS-attacker motverkas genom att tecknen ”<”, ”>” och ”&amp;” escapas. Till exempel: om värde är {'hello': 'world</script>&amp;'}, är utdata:

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

Detta är förenligt med en strikt policy för innehållssäkerhet som förbjuder exekvering av skript på sidan. Det upprätthåller också en ren separation mellan passiva data och körbar kod.

SistaLink to this heading

Returnerar det sista objektet i en lista.

Till exempel:

Django template
{{ value|last }}

Om värde är listan ['a', 'b', 'c', 'd'], blir utdata strängen "d".

längdLink to this heading

Returnerar längden på värdet. Detta fungerar för både strängar och listor.

Till exempel:

Django template
{{ value|length }}

Om värde är ['a', 'b', 'c', 'd'] eller "abcd", blir utdata 4.

Filtret returnerar 0 för en odefinierad variabel.

linebreaksLink to this heading

Ersätter radbrytningar i vanlig text med lämplig HTML; en enda ny rad blir en HTML-radbrytning (<br>) och en ny rad följd av en blankrad blir en styckebrytning (</p>).

Till exempel:

Django template
{{ value|linebreaks }}

Om värde är Joel\nis en snigel, kommer utdata att vara ``Joel<p><br>är en snigel``</p>.

linebreaksbrLink to this heading

Konverterar alla nya linjer i ett stycke vanlig text till HTML-radbrytningar (<br>).

Till exempel:

Django template
{{ value|linebreaksbr }}

Om värde är Joel\nis en snigel, kommer utdata att vara Joel<br>är en snigel.

linenummerLink to this heading

Visar text med radnummer.

Till exempel:

Django template
{{ value|linenumbers }}

Om värde är:

Django template
one
two
three

utmatningen kommer att vara:

Django template
1. one
2. two
3. three

”rättvistLink to this heading

Vänsterjusterar värdet i ett fält med en given bredd.

Argument: fältstorlek

Till exempel:

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

Om värde är Django, kommer utdata att vara "Django".

lägreLink to this heading

Konverterar en sträng till gemener.

Till exempel:

Django template
{{ value|lower }}

Om value är Totally LOVING this Album!, kommer utdata att vara totally loving this album!.

make_listLink to this heading

Returnerar värdet omvandlat till en lista. För en sträng är det en lista med tecken. För ett heltal omvandlas argumentet till en sträng innan en lista skapas.

Till exempel:

Django template
{{ value|make_list }}

Om värde är strängen "Joel", kommer utdata att vara listan ['J', 'o', 'e', 'l']. Om värde är 123, kommer utdata att vara listan ['1', '2', '3'].

telefon2numeriskLink to this heading

Konverterar ett telefonnummer (som kan innehålla bokstäver) till dess numeriska motsvarighet.

Inmatningen behöver inte vara ett giltigt telefonnummer. Detta konverterar glatt vilken sträng som helst.

Till exempel:

Django template
{{ value|phone2numeric }}

Om värde är 800-COLLECT kommer utdata att vara 800-2655328.

pluralizeLink to this heading

Returnerar ett pluralsuffix om värdet inte är 1, '1' eller ett objekt med längd 1. Som standard är detta suffix 's'.

Exempel:

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

Om num_messages är 1, kommer utdata att vara Du har 1 meddelande. Om num_messages är 2 kommer utdata att vara Du har 2 meddelanden.

För ord som kräver ett annat suffix än 's' kan du ange ett alternativt suffix som en parameter till filtret.

Exempel:

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

För ord som inte pluraliseras med ett enkelt suffix kan du ange både ett singular- och ett pluralsuffix, åtskilda med ett kommatecken.

Exempel:

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

avtryckLink to this heading

Ett omslag runt pprint.pprint() – för felsökning, egentligen.

slumpmässigLink to this heading

Returnerar ett slumpmässigt objekt från den angivna listan.

Till exempel:

Django template
{{ value|random }}

Om värde är listan ['a', 'b', 'c', 'd'], kan utdata vara "b".

”RättvisaLink to this heading

Högerjusterar värdet i ett fält med en given bredd.

Argument: fältstorlek

Till exempel:

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

Om värde är Django, kommer utdata att vara "    Django".

säkerLink to this heading

Markerar en sträng som inte kräver ytterligare HTML-escaping före utmatning. När autoescaping är avstängd har detta filter ingen effekt.

safeseqLink to this heading

Tillämpar filtret safe på varje element i en sekvens. Används tillsammans med andra filter som arbetar med sekvenser, t.ex. join. Till exempel:

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

Du kan inte använda filtret safe direkt i det här fallet, eftersom det först skulle konvertera variabeln till en sträng i stället för att arbeta med de enskilda elementen i sekvensen.

skivaLink to this heading

Returnerar en del av listan.

Använder samma syntax som Pythons list slicing. Se Python-dokumentationen för en introduktion.

Exempel:

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

Om some_list är ['a', 'b', 'c'], blir utdata ['a', 'b'].

slugifyLink to this heading

Konverterar till ASCII. Omvandlar mellanslag till bindestreck. Tar bort tecken som inte är alfanumeriska, understrykningstecken eller bindestreck. Konverterar till gemener. Tar även bort inledande och avslutande blanksteg.

Till exempel:

Django template
{{ value|slugify }}

Om värde är "Joel är en slug", kommer utdata att vara "joel-is-a-slug".

strängformatLink to this heading

Formaterar variabeln enligt argumentet, en specifikator för strängformatering. Denna specifikator använder printf-style String Formatting-syntaxen, med undantaget att det inledande ”%” utelämnas.

Till exempel:

Django template
{{ value|stringformat:"E" }}

Om värde är 10, blir utmatningen 1.000000E+01.

striptagsLink to this heading

Gör allt som står i din makt för att ta bort alla [X]HTML-taggar.

Till exempel:

Django template
{{ value|striptags }}

Om värde är <b>"Joel</b> <button>är</button> en <span>slug</span>", kommer utdata att vara "Joel är en slug".

tidLink to this heading

Formaterar en tid enligt det angivna formatet.

Det angivna formatet kan vara det fördefinierade TIME_FORMAT, eller ett eget format, samma som för filtret date. Observera att det fördefinierade formatet är lokalberoende.

Till exempel:

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

Om value är likvärdigt med datetime.datetime.now(), kommer utdata att vara strängen "01:23".

Observera att du kan använda backslash-escape för en formatsträng om du vill använda det ”råa” värdet. I det här exemplet är både ”h” och ”m” backslash-escaped, eftersom de annars är formatsträngar som visar timmen respektive månaden:

Django template
{{ value|time:"H\h i\m" }}

Detta skulle visas som ”01h 23m”.

Ett annat exempel:

Om man antar att LANGUAGE_CODE till exempel är "de", så för:

Django template
{{ value|time:"TIME_FORMAT" }}

kommer utdata att vara strängen "01:23" (Formatspecifikationen "TIME_FORMAT" för de locale som levereras med Django är "H:i").

The time filter will only accept parameters in the format string that relate to the time of day, not the date. If you need to format a date value, use the date filter instead (or along with time if you need to render a full datetime value).

Det finns ett undantag från ovanstående regel: När ett datetime-värde med tillhörande tidszonsinformation skickas (en time-zone-aware datetime-instans) kommer time-filtret att acceptera de tidszonsrelaterade formatspecifikationerna 'e', 'O' , 'T' och 'Z'.

När den används utan en formatsträng används formatspecifikationen TIME_FORMAT:

Django template
{{ value|time }}

är samma sak som:

Django template
{{ value|time:"TIME_FORMAT" }}

tid sedanLink to this heading

Formaterar ett datum som tiden sedan det datumet (t.ex. ”4 dagar, 6 timmar”).

Tar emot ett valfritt argument som är en variabel som innehåller det datum som ska användas som jämförelsepunkt (utan argumentet är jämförelsepunkten nu). Om till exempel blog_date är en datuminstans som representerar midnatt den 1 juni 2006 och comment_date är en datuminstans för 08:00 den 1 juni 2006, så skulle följande returnera ”8 timmar”:

Django template
{{ blog_date|timesince:comment_date }}

Jämförelse av offset-naiva och offset-medvetna datatider kommer att ge en tom sträng.

Minuter är den minsta enhet som används, och ”0 minuter” kommer att returneras för alla datum som ligger i framtiden i förhållande till jämförelsepunkten.

tidtillLink to this heading

Liknar timesince, förutom att det mäter tiden från nu till det angivna datumet eller datatiden. Om det till exempel är den 1 juni 2006 idag och conference_date är en datuminstans som innehåller den 29 juni 2006, kommer {{ conference_date|timeuntil }} att returnera ”4 veckor”.

Tar ett valfritt argument som är en variabel som innehåller det datum som ska användas som jämförelsepunkt (i stället för now). Om from_date innehåller 22 juni 2006, kommer följande att returnera ”1 vecka”:

Django template
{{ conference_date|timeuntil:from_date }}

Jämförelse av offset-naiva och offset-medvetna datatider kommer att ge en tom sträng.

Minuter är den minsta enhet som används och ”0 minuter” kommer att returneras för varje datum som ligger i det förflutna i förhållande till jämförelsepunkten.

titleLink to this heading

Konverterar en sträng till titlecase genom att låta orden börja med en versal och de återstående tecknen bli gemener. Denna tagg gör inga ansträngningar för att hålla ”triviala ord” i gemener.

Till exempel:

Django template
{{ value|title }}

Om värde är "mitt FÖRSTA inlägg", blir utdata "mitt första inlägg".

avkorta teckenLink to this heading

Trunkerar en sträng om den är längre än det angivna antalet tecken. Trunkerade strängar avslutas med ett översättningsbart ellips-tecken (”…”).

Argument: Antal tecken att trunkera till

Till exempel:

Django template
{{ value|truncatechars:7 }}

Om värde är "Joel är en slug", kommer utdata att vara "Joel i...".

trunkatechars_htmlLink to this heading

Liknar truncatechars, förutom att den är medveten om HTML-taggar. Alla taggar som öppnas i strängen och inte stängs före avkortningspunkten stängs omedelbart efter avkortningen.

Till exempel:

Django template
{{ value|truncatechars_html:7 }}

Om värde är <p>"Joel är en slug</p>", kommer utdata att vara "<p>Joel i..."</p>.

Nya streck i HTML-innehållet kommer att bevaras.

truncatewordsLink to this heading

Avkortar en sträng efter ett visst antal ord.

Argument: Antal ord att avkorta efter

Till exempel:

Django template
{{ value|truncatewords:2 }}

Om värde är "Joel är en slug", kommer utdata att vara "Joel är ...".

Nya streck i strängen tas bort.

truncatewords_htmlLink to this heading

Liknar truncatewords, förutom att den är medveten om HTML-taggar. Alla taggar som öppnas i strängen och inte stängs före avkortningspunkten stängs omedelbart efter avkortningen.

Detta är mindre effektivt än truncatewords, så det bör endast användas när det får HTML-text.

Till exempel:

Django template
{{ value|truncatewords_html:2 }}

Om värde är <p>"Joel är en slug</p>", kommer utdata att vara "<p>Joel är ..."</p>.

Nya streck i HTML-innehållet kommer att bevaras.

”oordnad listaLink to this heading

Tar rekursivt en självbäddad lista och returnerar en oordnad HTML-lista – UTAN att öppna och stänga <ul> taggar.

Listan förutsätts vara i rätt format. Om till exempel var innehåller ['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']], så kommer {{ var|unordered_list }} att returneras:

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

övreLink to this heading

Konverterar en sträng till versaler.

Till exempel:

Django template
{{ value|upper }}

Om värde är "Joel är en slug", kommer utdata att vara "JOEL ÄR EN SLUG".

urlencodeLink to this heading

Escapar ett värde för användning i en URL.

Till exempel:

Django template
{{ value|urlencode }}

Om värde är "https://www.example.org/foo?a=b&c=d" blir utdata "https%3A//www.example.org/foo%3Fa%3Db%26c%3Dd".

Ett valfritt argument som innehåller de tecken som inte ska escapas kan anges.

Om inget anges antas tecknet ”/” vara säkert. En tom sträng kan anges om alla tecken ska escapas. Till exempel:

Django template
{{ value|urlencode:"" }}

Om värde är "https://www.example.org/", kommer utdata att vara "https%3A%2F%2Fwww.example.org%2F".

urlizeLink to this heading

Omvandlar webbadresser och e-postadresser i text till klickbara länkar.

Denna malltagg fungerar på länkar med prefixet http://, https:// eller www.. Till exempel: kommer https://djangocon.eu att konverteras men djangocon.eu kommer inte att göra det.

Den stöder också länkar som endast innehåller domäner och som slutar på en av de ursprungliga toppdomänerna (.com, .edu, .gov, .int, .mil, .net och .org). Till exempel: konverteras djangoproject.com.

Länkar kan ha efterföljande skiljetecken (punkter, kommatecken, slutparenteser) och inledande skiljetecken (öppningsparenteser), och urlize kommer fortfarande att göra det rätta.

Länkar som genereras av urlize har ett rel="nofollow"-attribut tillagt till sig.

Till exempel:

Django template
{{ value|urlize }}

If value is "Check out www.djangoproject.com", the output will be:

Django template
Check out <a href="http://www.djangoproject.com" rel="nofollow">www.djangoproject.com</a>

Förutom webblänkar omvandlar urlize även e-postadresser till mailto:-länkar. Om värde är "Skicka frågor till foo@example.com", kommer utdata att vara "Skicka frågor till <a href="mailto:foo@example.com">foo@example.com"</a>.

Filtret urlize tar också en valfri parameter autoescape. Om autoescape är True, kommer länktexten och webbadresserna att escapas med Djangos inbyggda escape-filter. Standardvärdet för autoescape är True.

urlizetruncLink to this heading

Omvandlar webbadresser och e-postadresser till klickbara länkar precis som urlize, men trunkerar webbadresser som är längre än den angivna teckengränsen.

Argument: Antal tecken som länktexten ska trunkeras till, inklusive den ellips som läggs till om trunkering är nödvändig.

Till exempel:

Django template
{{ value|urlizetrunc:15 }}

If value is "Check out www.djangoproject.com", the output would be:

Django template
Check out <a href="http://www.djangoproject.com" rel="nofollow">www.djangoproj…</a>

Precis som med urlize bör detta filter endast användas på vanlig text.

ordantalLink to this heading

Returnerar antalet ord.

Till exempel:

Django template
{{ value|wordcount }}

Om värde är "Joel är en slug", blir utdata 4.

wordwrapLink to this heading

Ombryter ord med angiven radlängd.

Argument: antal tecken vid vilka texten ska brytas

Till exempel:

Django template
{{ value|wordwrap:5 }}

Om värde är Joel är en slug, skulle utdata vara:

Django template
Joel
is a
slug

”Ja, nejLink to this heading

Mappar värden för True, False och (valfritt) None till strängarna ”yes”, ”no”, ”maybe” eller en anpassad mappning som skickas som en kommaseparerad lista och returnerar en av dessa strängar i enlighet med värdet:

Till exempel:

Django template
{{ value|yesno:"yeah,no,maybe" }}

Värde

Argument

Utgångar

True

ja

True

”Ja, nej, kanske.”

Ja

False

”Ja, nej, kanske.”

nej

Ingen

”Ja, nej, kanske.”

kanske

Ingen

”Ja, nej.”

no (konverterar None till False om ingen mappning för None anges)

Taggar och filter för internationaliseringLink to this heading

Django tillhandahåller malltaggar och filter för att styra varje aspekt av internationalisering i mallar. De möjliggör detaljerad kontroll av översättningar, formatering och konvertering av tidszoner.

i18nLink to this heading

Detta bibliotek gör det möjligt att ange översättningsbar text i mallar. För att aktivera det, sätt USE_I18N till True, ladda det sedan med {% load i18n %}.

Se specificera-översättningssträngar-i-template-kod.

l10nLink to this heading

Det här biblioteket ger kontroll över lokaliseringen av värden i mallar. Du behöver bara ladda biblioteket med hjälp av {% load l10n %}.

Se Styrning av lokalisering i mallar.

tzLink to this heading

Detta bibliotek ger kontroll över tidszonskonverteringar i mallar. Precis som l10n behöver du bara ladda biblioteket med {% load tz %}, men du brukar också ställa in USE_TZ till True så att konvertering till lokal tid sker som standard.

Se tidszoner-i-mallar.

Andra taggar och filterbibliotekLink to this heading

Django levereras med ett par andra mall-taggbibliotek som du måste aktivera uttryckligen i din INSTALLED_APPS-inställning och aktivera i din mall med {% load %}-taggen.

django.contrib.humanizeLink to this heading

En uppsättning Django-mallfilter som är användbara för att lägga till en ”mänsklig touch” till data. Se django.contrib.humanize.

statiskLink to this heading

statiskLink to this heading

För att länka till statiska filer som sparas i STATIC_ROOT levereras Django med en static malltagg. Om appen django.contrib.staticfiles är installerad kommer taggen att servera filer med url()-metoden för den lagring som anges av staticfiles i STORAGES. Till exempel:

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

Den kan också använda standardkontextvariabler, t.ex. genom att anta att en user_stylesheet-variabel skickas till mallen:

Django template
{% load static %}
<link rel="stylesheet" href="{% static user_stylesheet %}" media="screen">

Om du vill hämta en statisk URL utan att visa den kan du använda ett lite annorlunda anrop:

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

”Hämta statiskt prefixLink to this heading

Du bör föredra malltaggen static, men om du behöver mer kontroll över exakt var och hur STATIC_URL injiceras i mallen kan du använda malltaggen get_static_prefix:

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

Det finns också ett andra formulär som du kan använda för att undvika extra bearbetning om du behöver värdet flera gånger:

Django template
{% 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_prefixLink to this heading

I likhet med get_static_prefix, fyller get_media_prefix en mallvariabel med mediaprefixet MEDIA_URL, t.ex:

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

Genom att lagra värdet i ett dataattribut säkerställer vi att det escapas på lämpligt sätt om vi vill använda det i ett JavaScript-sammanhang.