2009-08-13 55 views
0

那么,我想出什么jeje ....如何评估模板中的{%if%}变量?Django,{%if%}标记评估

我尝试这个

{% if variable > 0 %} or {% if variable != 0 %} 

但...我得到的错误:(

感谢

+1

Django的模板系统是专门为鼓励尽可能少的逻辑可能是在模板中,这就是为什么在第一标签系统似乎有限。这个想法是将你的想法转换到更多的MVC状态,在这个状态下你的数据已经准备好,然后到达你的模板。 – 2009-08-13 18:27:07

+0

jinja模板引擎允许此功能在django中正常工作 – Evgeny 2009-10-22 21:57:41

回答

4

退房Django的智能,如果模板标签http://simonwillison.net/2009/Mar/3/smartif/ http://www.djangosnippets.org/snippets/1350/

它取代了内置的,如果标签,让你做对比运营商。

+0

韦德感谢你了,但是我的新Django的,我不知道在哪里患病把代码:( 核心 ,在我的观点,模型等?? 我认为我需要的片段 – Asinox 2009-08-13 18:35:40

+0

我做到了,谢谢 – Asinox 2009-08-13 19:56:15

+0

你可以把它放在核心,但如果你更新Django核心,可能会导致问题 我有一个名为“utils”,我存储的应用程序我在不同的项目中使用的例程和帮助程序,我只是将smart-if代码添加到该应用程序的templatetags文件夹中。 – Wade 2009-08-13 21:18:57

0

您应该使用

{% ifnotequal... 
{% ifequal... 

等:)

这里全是:http://docs.djangoproject.com/en/dev/topics/templates/#topics-templates

+1

您刚刚指出模板概述,完整标记和过滤器列表位于以下位置:http://docs.djangoproject.com/en/dev/ref/templates/builtins/ #ref-templates-builtins-tags – 2009-08-13 18:24:45

+0

问题是,如果我想要这个:{%ifnotequal变量0%},但如果变量是-1,那么是“真”,我不希望负值将是“真”。 与同为{%ifequal%} – Asinox 2009-08-13 18:33:45

0

每次遇到小问题时,您都应该阅读Django出色的文档,而不是在每次遇到小问题时不断发帖。特别是,模板文档有一个非常好的解释,为什么你所尝试的是不允许的。

在这种情况下,您可以从Python 0与False相同的事实中受益。所以,你可以有

{% if variable %} 

{% if not variable %} 

否则,使用{% ifequal %}{% ifnotequal %}为MaRiz解释。

+1

“轻微”是​​一个意见问题。相信世界上没有人比你更有经验。这都是相对的。 Joel Spolsky特别指出,他对这个网站的设想是回答所有问题,甚至是最看似微不足道的问题。现在已经提出这个问题意味着它可能不需要再次提问。你可能花了那段时间,你曾经在开始回答时抱怨,而是使用编辑权限来改善他的问题。 – 2009-08-13 18:34:47

+2

我认为Joel Spolsky不同意你的观点,即“不要发布问题,如果过于简单,请阅读文档”。 – 2009-08-13 18:36:44

+1

即时通讯对不起,我认为我做的第一件事就是阅读文档,不管是否相信,但是在文档中{%if%}中没有关于运算符的任何内容,我不知道如果我错了。 谁说我的例子-1是真的?我需要0或> 0,但如果我从数据库中提取值,如果值为-1,那么{%if variable%}为真。 对不起。 – Asinox 2009-08-13 18:50:41