【问题标题】:Assign Value of Named URL to a Variable in Django Templates将命名 URL 的值分配给 Django 模板中的变量
【发布时间】:2013-04-25 16:07:24
【问题描述】:

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

感谢您的帮助。

【问题讨论】:

  • 您能否就更大的问题提供更多信息?

标签: django


【解决方案1】:

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

查看示例: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 %}

【讨论】:

  • 很好的建议,绝对比新标签优雅得多。谢谢!
  • as 的语句没有被渲染(它是这样工作的)。稍后您可以使用该变量。
【解决方案2】:

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

具体取决于您要做什么,也许including 另一个模板并发送您定义的变量可以做到,但我对此表示怀疑。

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

【讨论】:

  • 因为我理解问题的方式与我所知道的任何核心行为都不匹配。我的想法是有人试图在视图中进行复杂的操作,而不仅仅是简单地命名一个 URL。
猜你喜欢
  • 2012-07-23
  • 1970-01-01
  • 2015-07-31
  • 2015-02-14
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
相关资源
最近更新 更多