2012-12-13 213 views
0

可能重复:
Django templates syntax error嵌套问题?

当我使用{%如果request.user.is_authenticated%}条件在此代码重定向它抛出错误Invalid block tag: 'else'

{% if request.user.is_authenticated %} 

{% extends "pages/page.html" %} 
{% load mezzanine_tags shop_tags i18n %} 
{% block body_id %}category{% endblock %} 
{% block main %}{{ block.super }} 
{% regroup products by category as products_by_category %} 
{% for c in products_by_category %} 
...... 
     {% for p in c.list %}  
...... 
     {% if p.num_in_stock == None %} 
... 
     {% else %} 
     {% if p.num_in_stock < 4 %} 
... 
      {% endif %} 
      {% endif %} 
     .....   
        {% endfor %} 
...... 
{% endfor %} 
{% endblock %} 

{% else %} 

<script> 
window.location="/stylequiz/"; 
</script> 

如果我使用这个脚本,那么它不会给出错误

{% if request.user.is_authenticated %} 
    <h1>welcome</h1> 
{% else %} 

<script> 
window.location="/stylequiz/"; 
</script> 
{% endif %} 

我想一定有问题嵌套如果

+0

当然,有些对齐不会伤害.. – 2012-12-13 06:03:54

+0

你会详细说明你的评论一点.. –

+1

我认为他的意思是“你的/ endfor,如果/ endif块不对齐,并且很难阅读。 – voithos

回答

2

您不能将{%extends%}标记放在{%if%}之内。它应该是模板中的第一个标记。

从Django文档Template inheritance

如果你使用模板{%伸出%},它必须是这个模板的第一个模板标签。模板继承将不起作用,否则。

+0

但是如果我们把它放在外面,如果条件那么它会打印出我们不想要的值 –

+0

@ user1896946,在这种情况下,您将不得不重新构建模板,这样就不必将'{%extends%}'在{%if%}内。 – Rohan