Как передать один шаблон django с циклом for в другой, используя оператор include? - PullRequest
0 голосов
/ 08 ноября 2019

Я работаю над страницей часто задаваемых вопросов, где вопросы и ответы передаются в разделы шаблона на основе их категорий. Я хотел бы уменьшить количество html и использовать раздел div в качестве шаблона

<div id="{{id}}">
    <div class="h2">{{category}}</div>
    {% for q in faqs %}
        {% if q.category == '{{category}}' %}
        <ul class="collapsible">
            <li>
                <div class="collapsible-header">{{q.question}}></div>
                <div class="collapsible-body"><span>{{q.answer}}</span></div>
                <div class="divider"></div>
            </li>
        </ul>
        {% endif %}
    {% endfor %}
</div>

Мой основной HTML содержит следующий код:

{% with id='m_faq'%}
{% with category='Methodology'%}
   {% include 'main/faqs_section.html' %}
{% endwith %}{% endwith %}

Я могу передавать только переменные id и category,Есть ли способ для цикла for?

1 Ответ

0 голосов
/ 08 ноября 2019

Я думаю, что решением было бы создать список категорий в views.py

cat = [ 'Category1', 'Category2', 'Category3','Category4']

, передать его в контекстный словарь и затем поместить дополнительный цикл for в раздел div.

{% for c in cat %}
<div id="">
    <div class="h4">{{c}}</div>
    {% for q in faqs %}
    {% if c == q.category %}
    <ul class="collapsible">
        <li>
            <div class="collapsible-header">{{q.question}}</div>
            <div class="collapsible-body"><span>{{q.answer}}</span></div>
            <div class="divider"></div>
        </li>
    </ul>
    {% endif %}
    {% endfor %}
</div>
{% endfor %}

Это сгенерирует шаблон со списком часто задаваемых вопросов, разделенных на разделы.

...