19

在我的 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 值进行比较。

谢谢您的帮助。

4

2 回答 2

51

如果功能在核心中,为什么要创建新的模板标签/过滤器?

查看示例: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 %}
于 2013-04-25T17:35:55.633 回答
-4

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

取决于您正在尝试做什么,可能包括另一个模板并发送您定义的变量可以做到这一点,但我对此表示怀疑。

Django 模板系统背后的想法是使其模板中没有太多逻辑。因此,它又回到了准备在视图中输出所需的数据或制作模板标签。

于 2013-04-25T16:28:22.177 回答