将命名URL的值分配给Django模板中的变量

时间:2013-04-25 16:07:24

标签: django

在我的Django模板中,我需要将名称url的值分配给with块中的变量,以便我可以在多个位置使用它。

我需要实现这样的目标:

{% for tag in post.tags.all %}
    {% with tagabs={%url showtag tag%} %}
          <li><a href="{{tagabs}}">#{{tag}}</a></li>
    {% endwith %}
{% endfor %}

但显然这不起作用,最终会出现解析错误。上面的示例是一个简单的场景,我可以使用{%url showtag tag%}而不是{{tagabs}}并删除with块。但在我的场景中,我需要在几个地方和if语句中使用tagabs值进行比较。

感谢您的帮助。

2 个答案:

答案 0 :(得分:38)

如果要素是核心,为什么要创建新的模板标记/过滤器?

查看样本:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#url

{% url 'path.to.view' arg arg2 as the_url %}

<a href="{{ the_url }}">I'm linking to {{ the_url }}</a>

{% url 'path.to.view' as the_url %}
{% if the_url %}
  <a href="{{ the_url }}">Link to optional stuff</a>
{% endif %}

答案 1 :(得分:-4)

我认为您必须创建自己的template tag来管理此问题,或者在视图中创建必要的数据并将其传递给模板。

根据您正在尝试做的事情,可能including另一个模板并发送您定义的变量可以做到,但我对此表示怀疑。

Djangos模板系统背后的想法是使模板中没有太多逻辑。因此,它要么准备好在视图中输出所需的数据,要么制作模板标签。