我想知道如何在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%} %}
非常感谢!
答案 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 %}