2012-12-13 4 views
0

Можно создать дубликат:
Django templates syntax errorпроблема с вложенными if?

Когда я использую {%, если 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

Конечно некоторые выравнивание не мешало бы .. –

+0

бы вы уточнить ваш комментарий мало-мальски .. –

+1

Я думаю, что он означает «ваше для/ENDFOR, если/ENDIF блоки не выровнены, и это трудно читать.» – voithos

ответ

2

Вы не можете положить {%extends%} тег внутри {%if%}. Он должен быть первым тегом в шаблоне.

От Джанго Docs Template inheritance

Если вы используете {% распространяется%} в шаблоне, он должен быть первым шаблонных тегов в этом шаблоне. Наследование шаблонов не будет работать, в противном случае.

+0

, но если мы выставим его вне условия if, то оно напечатает значение, которое мы не хотим –

+0

@ user1896946, в этом случае вам придется переструктурировать шаблоны, чтобы вам не пришлось ставить '{% extends%}' внутри '{% if%}'. – Rohan