【问题标题】:Conditions Invalid block tag: 'else', expected 'endblock' Django条件无效的块标签:'else',预期的'endblock' Django
【发布时间】:2014-01-06 21:20:29
【问题描述】:
{% if not User_Tld_Entered  %}
    #HTML HERE

{% endif %}

    {% if User_No_Auth_Tld > 0 %}
        {% for NotAuthDomain in User_No_Auth_Tld %}
            #HTML HERE
        {% endfor %}
    {% endif %}

{% else %}
    {% for tld in tld_set %}
        #HTML HERE
    {% endfor %}
{% endif %}

由于某种原因,它在抛出上述else 条件时失败:

Invalid block tag: 'else', expected 'endblock'

我在这里做错了什么?

谢谢。

【问题讨论】:

  • else 应该指的是什么?匹配的if在哪里?

标签: python django django-templates conditional


【解决方案1】:
{% if not User_Tld_Entered  %}
    #HTML HERE

{% endif %} <- this one  needs to go  

    {% if User_No_Auth_Tld > 0 %}
        {% for NotAuthDomain in User_No_Auth_Tld %}
            #HTML HERE
        {% endfor %}
    {% endif %}   <- or this one nedds to go

{% else %} <-- whos else is this
    {% for tld in tld_set %}
        #HTML HERE
    {% endfor %}
{% endif %}

【讨论】:

    【解决方案2】:

    第一个{% endif %} 结束第一个块。然后你有if User_No_Auth_Tld &gt; 0,你也关闭了那个块。当{% else %} 出现时,您已不在if 块内,因此这是一个意外标签。

    如果您删除第一个{% endif %},它将起作用

    【讨论】:

    • 虽然解释确实有道理,但我认为这不会“解决”您的问题。
    • 没问题 :) 我发现在较大的代码段中平衡这些块的好技术(因为似乎没有文本编辑器跟踪)是计算手指上的嵌套:在每个手指上添加一个手指{% if ... %} 并为每个 {% endif %} 移除一个手指。如果一切都是平衡的,你最终会得到 0。另外,保持你的缩进整洁!
    猜你喜欢
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2015-04-19
    • 2015-02-10
    • 2012-03-09
    • 2018-09-01
    • 2023-03-26
    相关资源
    最近更新 更多