赋值

2013-04-25 81 views
10

在我的Django的模板,我需要分配一个名称的值URL到一个变量内有块这样我就可以在多个地方使用它。赋值

我需要实现这样的事情:

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

但显然不工作,并最终会解析错误。上面的例子是一个简单的场景,我可能只是有{%URL showtag标签%},而不是{{tagabs}}与块取出。但在我的情况下,我需要在多个地方和if语句中使用tagabs值来进行比较。

感谢您的帮助。

+0

你能给出更大的问题,请稍微更多信息? – rockingskier 2013-04-25 16:14:14

回答

31

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

在看样品: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 %} 
+0

优秀的建议,绝对比新标签更优雅。谢谢! – 2013-04-25 17:42:37

-4

我认为你必须创建自己的template tag来管理这个问题,或者在视图中创建必要的数据,并把它传递到模板。

取决于你想要什么做的,也许including另一个模板,并在您定义的变量发送能做到这一点,但我对此表示怀疑。

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

+0

为什么重新发明轮子时,url标签已经做好了这项工作? – 2013-04-25 20:23:43

+0

因为我理解这个问题的方式并不符合我所知道的任何核心行为。它给我带来的方式是有人试图在视图中进行复杂的操作,而不仅仅是简单地命名一个URL。 – gaqzi 2013-04-25 23:32:42