Как из одного шаблона jinja передать значения другому (Django, Python)
Есть два шаблона (home и card), через функцию views.py я передаю модель главному шаблону home. В home встроен цикл, который создает card. Как передать значения в card?
То есть я хочу передавать в home.html только модель, чтобы home.html создавало карточку и рисовала card.html. Проблема в том что я не могу из home.html задать параметры jinja для card.html
{% extends 'homepage.html' %}
{% block content %}
<div class="container">
<div class="row">
{% for program in programs %}
<div class="col">
{% include 'card.html' %}
</div>
{% endfor %}
</div>
</div>
{% endblock %}
{% block content %}
<div class="card" style="width: 18rem;">
<img src = '{{ image }}' class="card-img-top" alt='{{ image_text }}'>
<div class="card-body">
<h5 class="card-title">{{ card_title }}</h5>
<p class="card-text">{{ card_text }}</p>
<a href = '{{ card_btn_link }}' class="btn btn-primary">{{ card_btn_text }}</a>
</div>
</div>
{% endblock %}
Ответы (1 шт):
Автор решения: Евгений
→ Ссылка
У вас в card используются переменные (например, {{ image }}), которые не объявлены в home.
Попробуйте перед включением шаблона объявлять эти переменные. Не знаю, как у вас реализована модель program, но объявление переменных будет выглядеть примерно так:
{% extends 'homepage.html' %}
{% block content %}
<div class="container">
<div class="row">
{% for program in programs %}
<div class="col">
{% with image = program.image %}
{% with image_text = program.image_text %}
{% with card_btn_link = program.card_btn_link %}
{% with card_btn_text = program.card_btn_text %}
{% include 'card.html' %}
{% endwith %}
{% endwith %}
{% endwith %}
{% endwith %}
</div>
{% endfor %}
</div>
</div>
{% endblock %}
Подробнее о переменных в jinja2 можно почитать тут