11

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

我的代码中有一个用于创建按钮的 HTML 文件。因此,当要添加此按钮时,我只需将其包含在内。问题是其中1个参数是URL,目前我还没有找到除了放置文本url之外的其他解决方案。

所以我有这个:

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

我必须有类似的东西:

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

非常感谢你!

4

3 回答 3

19

您是否尝试过这种语法:

{% url 'some-url-name' arg arg2 as the_url %}
{% include "button.html" with title="title" link=the_url %}
于 2016-01-31T09:43:07.533 回答
8

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

例子:

看法:

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 值添加到上下文中

于 2012-11-29T15:11:27.320 回答
3

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

首先创建一个过滤器

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

然后像这样在模板中使用它

{% include "button.html" with title="title" link="myview.view"|rev %}
于 2015-02-01T18:27:25.043 回答