【问题标题】:django template strange behaviourdjango模板奇怪的行为
【发布时间】:2011-08-06 00:40:25
【问题描述】:
{% if None == False %}
    abc
{% endif %}

上面的代码,奇怪的是我的模板显示abc。有什么解释吗?

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    奇怪。在普通的python中,

    if None == False:
        # this will not run
        print "abc"
    

    在 Django 上提交一个错误。 :)

    【讨论】:

    • 尝试提交票证但收到以下错误:提交被拒绝为潜在垃圾邮件(BlogSpam 说内容是垃圾邮件 (badip:state/blacklist.d/127.0.0.1))
    【解决方案2】:

    Jason Culverhouse 在我问的另一个类似的question 中提供了答案。

    False 和 None 被视为变量,而不是常量。如果在上下文字典中找不到变量,则解析为无。

    【讨论】:

      【解决方案3】:

      这正是 Python 解析“真相”以在不同类型之间进行比较的方式。

      查看文档。 “无”被认为是 False。

      http://docs.python.org/library/stdtypes.html#truth-value-testing

      编辑:如下所示,python 控制台没有确认这种行为,所以,我也很惊讶。 -1 对我!

      【讨论】:

      • 如果 None == False 在我的 python 控制台中没有产生。
      • 等一下,我刚试了一下,我的控制台返回“False”。我认输!
      【解决方案4】:

      现在看来您必须按照post 中的建议创建自己的模板过滤器

      【讨论】:

      • 我想我会在我的逻辑视图中这样做。
      【解决方案5】:

      或者,您可以使用if not None

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多