Django模板 - 你可以将参数传递给模板标签* args样式吗?

时间:2015-03-13 15:51:22

标签: django templates django-templates

我正在尝试在模板中实现一些面包屑。

我有些人认为网址有一个参数,其他两个参数。

url(r'^firstpage/(?P<arg_one>(option1|option2))/(?P<unique_identidfier>[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890\-_]+)/', views.MyView.as_view(), name="two_arg_view"),

url(r'^secondpage/(?P<unique_identidfier>[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890\-_]+)/', views.MySecondView.as_view(), name="one_arg_view),

我想通过get_context_data传入一串面包屑,然后在模板中循环遍历:

<div class="breadcrumbs">
        {%for crumb in breadcrumbs %}
            <a href="{% url crumb.url arg1 optional_arg2 %}" >{{ crumb.text }}</a>&nbsp;>&nbsp;    
        {% endfor %}
        {{ current_page }}
</div>

有没有办法可以将可选数量的参数传递给url模板标签?

以与* args调用内容相同的方式?

我想做的事情(但不起作用)是:

 <a href="{% url crumb.url *crumb.args %}" >{{ crumb.text }}</a>&nbsp;>&nbsp;    

1 个答案:

答案 0 :(得分:1)

inclusion tag很可能会做你正在寻找的事情。

包含标记可以接受当前模板上下文,您可以从那里检索视图值,而不必手动传入它们。通过包含包含div,锚标记等的模板,您可以简化模板: / p>

{% tag_url %}

而不是必须重复一堆条件语句和循环。

我不建议在视图中使用这种逻辑,因为它没有封装或可重复使用。