自动将参数传递给partials

时间:2015-11-28 11:59:18

标签: django django-templates

问题是header.html部分始终包含保留在数据库中的类别字典。包括带参数的部分

{% include "_partials/header.html" with categories %}

每次渲染部分时我都需要传递类别字典

render("index.html", {"flowers":flowers, "categories":categories}) 
render("details.html", {"flower":flower, "categories":categories})
...

是否有任何解决方案,header.html部分始终包含categories字典。

2 个答案:

答案 0 :(得分:3)

使用包含标签解决它。

templatetags/tags.py文件中创建了自定义标记

from django import template
from flowers.models import Category
register = template.Library()
@register.inclusion_tag('_partials/nav.html')
def show_categories():
    categories = Category.objects.all()
    print categories
    return {'categories':categories}

_partials/nav.html文件

中为其创建模板
<nav>
   <ul>
        {% for category in categories %}
            <li><a href="{% url 'category:detail' category.id' %}">{{ category.name }}</a></li>
        {% endfor %}
   </ul>
</nav>

最后,使用了那个标签

{% load tags %}
{% show_categories %}

答案 1 :(得分:1)

您应该使用custom inclusion tag