【问题标题】:Django, The {% if %} tag evaluatesDjango,{% if %} 标签评估
【发布时间】:2009-08-13 18:13:55
【问题描述】:

嗯,我不知道是什么 jeje .... 在模板中使用 {% if %} 评估一个变量有多糟糕?

我正在尝试这个

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

但是...我遇到了错误:(

谢谢

【问题讨论】:

  • Django 模板系统专门设计用于鼓励在模板中使用尽可能少的逻辑,这就是标签系统一开始可能看起来有限的原因。我们的想法是将您的思维转变为更多的 MVC 状态,在这种状态下,您的数据在到达您的模板之前已经准备好。
  • jinja 模板引擎允许这样做并且在 django 中运行良好

标签: django django-templates


【解决方案1】:

查看 Django smart-if 模板标签 http://simonwillison.net/2009/Mar/3/smartif/ http://www.djangosnippets.org/snippets/1350/

它取代了内置的 if 标记,让你可以做比较运算符。

【讨论】:

  • Wade 谢谢你,但我是 Django 新手,我不知道代码应该放在哪里 :( 在核心、在我的视图、模型等中??我认为我需要 sn- p
  • 您可以将它放在核心中,但是如果您更新 django 核心,这可能会导致问题。我有一个名为“utils”的应用程序,用于存储杂项。我在不同项目中使用的例程和助手。我刚刚将 smart-if 代码添加到该应用的 templatetags 文件夹中。
  • 谢谢韦德,sn-p 在我的应用程序中 :) 再次感谢 :)
【解决方案2】:

你应该使用

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

等等 :)

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

【讨论】:

  • 您刚刚指向模板的概述,完整的标签和过滤器列表在这里:docs.djangoproject.com/en/dev/ref/templates/builtins/…
  • 问题是,如果我想要这个:{% ifnotequal variable 0 %},但如果变量是-1,那么是“真”,我不希望那个负值是“真”。和 {% ifequal %} 相同
【解决方案3】:

不要在每次遇到小问题时都在这里发布,而应该阅读 Django 的优秀文档。特别是,模板文档很好地解释了为什么不允许您尝试的操作。

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

{% if variable %}

或

{% if not variable %}

否则,请按照 MaRiz 的说明使用 {% ifequal %} 和 {% ifnotequal %}。

【讨论】:

  • “次要”是一个见仁见智的问题。信不信由你,世界上有些人没有你那么有经验。都是相对的。 Joel Spolsky 明确表示,他对这个网站的设想是对所有问题都有答案,即使是最看似微不足道的问题。现在已经被问到这个事实意味着它可能不必再次被问到。您本可以将过去在回答开始时抱怨的那段时间花在使用您的编辑权限来改进他的问题上。
  • 我认为 Joel Spolsky 不同意您的断言,即“不要发布问题,如果它太简单,请阅读文档”。
  • 对不起,伙计们,我首先想到的是阅读文档,信不信由你,但在文档中没有关于 {%if %} 中的运算符的内容,我不知道我是否错了.谁说在我的情况下 -1 是真的?我需要 0 或 >0 ,但是如果我从数据库中获取一个值,如果该值为 -1,那么 {% if variable %} 为真。对不起。
【解决方案4】:

你用的是什么django? 1.2及以上有smart if https://docs.djangoproject.com/en/dev/releases/1.2/

您现在可以这样做了:

{% if a != b  || c != d %}
 ...
{% endif %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 2012-09-12
    • 2012-11-17
    • 2011-04-18
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多