Шаблон Django - новая переменная
Позвольте мне предисловие, я только начинаю Python, так что если это действительно простой вопрос ^ _ ^
У меня есть html файл со следующим содержимым:
{%for d in results%}
<div class="twt">
<img src="{{ d.profile_image_url }}" width="48px" height="48px" /> <span> {{ d.text }} </span>
<span class="date">{{ d.created_at }}</span>
</div>
{% endfor %}
который работает хорошо, но я также хотел бы объявить переменную на этой странице. Скажем, для этого примера мы можем указать RowNumber, который будет увеличиваться для каждого отображаемого d, выплевывая текущий RowNumber.
Я пробовал делать:
{{ RowNumber = 0}}
{{ RowNumber ++ }}
Но мне кажется, что я не могу объявить RowNumber.
Ответы
Ответ 1
Просмотрите документацию в цикле for
.
Он автоматически создает переменную с именем forloop.counter
, которая содержит текущий индекс итерации.
Что касается большего вопроса о том, как объявлять переменные, в Django нет готового способа сделать это, и это не считается отсутствующей функцией, а функцией. Если вы действительно хотели это сделать, возможно с пользовательскими тегами, но по большей части философия, которой вы хотите следовать, состоит в том, что в основном все, что вы хотите это потребует, чтобы это было сделано в представлении, и шаблон должен быть зарезервирован для очень простой логики. Например, для вашего примера суммирования можно использовать фильтр add. Аналогично, вы можете создать свои собственные фильтры точно так же, как с тегами.
Ответ 2
Если вы хотите установить любую переменную внутри шаблона Django, вы можете использовать этот небольшой тег шаблона, который я написал.
Ответ 3
вот как это сделать:
{% with name="World" greeting="Hello" %}
<html>
<div>{{ greeting }} {{name}}!</div>
</html>
{% endwith %}
см. также: с тегом
john и yarden из этой публикации:
Как установить значение переменной внутри кода шаблона?
Ответ 4
В шаблоне:
{% for outer_obj in outer_list %}
{% for inner_obj in inner_list %}
{% increment_counter forloop.counter0 forloop.parentloop.counter0 outer_list.count %}
{% endfor %}
{% endfor %}
Templatetag:
@register.simple_tag
def increment_counter(outer, inner, outer_loop_length):
return outer + inner * outer_loop_length + inner * (outer_loop_length - 1)
Результат: 0 1 2 3...