如何传递url作为include的参数

时间:2012-11-29 15:05:57

标签: django django-templates

我想知道如何在django模板中传递url作为include的参数。

我的代码中有一个用于创建按钮的HTML文件。因此,当想要添加此按钮时,我只需包含它。问题是其中一个参数是URL,现在我找不到其他解决方案而不是放置文本URL。

所以我有这个:

{% include "button.html" with title="title" link="/new-event/" %}

我必须有类似的东西:

{% include "button.html" with title="title" link={% url myview.view%} %}

非常感谢!

3 个答案:

答案 0 :(得分:11)

您是否尝试过这种语法:

{% url 'some-url-name' arg arg2 as the_url %}
{% include "button.html" with title="title" link=the_url %}

答案 1 :(得分:6)

我相信您必须将url分配给添加到上下文中的变量,以便在include标记中使用它。

示例:

查看:

from django.core.urlresolvers import reverse

def your_view(request):
    url = reverse('the_url_name_to_reverse', args=[], kwargs={})
    return render(request, 'the-template.html', {'url': url})

<强>模板:

{% include "button.html" with title="title" link=url %}

如果它是每个模板中需要的值,您可以考虑添加上下文处理器以将反转的url值添加到上下文

答案 2 :(得分:2)

有些人可能会发现这种解决方案更合适:

首先创建一个过滤器

from django.core.urlresolvers import reverse
@register.filter()
def rev(value):
    return reverse(value)

然后在模板中使用它

{% include "button.html" with title="title" link="myview.view"|rev %}