Django работа с переменными в шаблоне

Работа с переменными в шаблоне Django требует некоторых манипуляций, следовательно в данной статье мы их и разберем

Создайте тег шаблона:

Приложение должно содержать templatetagsкаталог, на том же уровне models.pyviews.pyи т.д. Если это уже не существует, создайте его — не забудьте __init__.pyфайл , чтобы обеспечить каталог рассматривается как пакет Python.

Создайте файл с именем define_action.pyвнутри каталога templatetags со следующим кодом:

from django import template
register = template.Library()

@register.assignment_tag
def define(val=None):
  return val

Примечание.@register.assignment_tag используется в Djnago1.9 в Djnago2.0 данный метод устарел и можно воспользоваться @register.simple_tag

Примечание. Сервер разработки не будет автоматически перезагружен. После добавления templatetagsмодуля вам нужно будет перезагрузить сервер, прежде чем вы сможете использовать теги или фильтры в шаблонах.


Затем в вашем шаблоне вы можете присвоить значения контексту следующим образом:

{% load define_action %}
{% if item %}

   {% define "Edit" as action %}

{% else %}

   {% define "Create" as action %}

{% endif %}


Would you like to {{action}} this item?

Пример использования проверки последовательности:

from django import template
register = template.Library()

@register.simple_tag
def define(val=None):
    vals = 0
    if val == 3:
        vals == 1
    else:
        vals = int(val) + 1
    return vals
<div class="container">
    <div class="row">
        {% define 0 as action %}
        {% for k in bonus %}
            {% if action == 3 %}
                <div class="col-12 col-lg-2">
                </div>
                <div class="col-12 col-lg-2">
                </div>
            {% endif %}
                <div class="col-12 col-lg-5">
                    123123
                </div>
            {% define action as action %}
        {% endfor %}
    </div>
</div>

В дальнейшем можно изменять данный код для Django работа с переменными в шаблоне. Удачной работы!

Добавить комментарий