Я не понимаю это сообщение об ошибке шаблона Django

#django #django-templates

#django #django-templates

Вопрос:

Вот сообщение об ошибке, заполняющее мою страницу, с сопутствующей проблемой кода:

TemplateSyntaxError в / home

Недопустимый тег блока: ‘endblock’, ожидаемый ‘endif’

Метод запроса: ПОЛУЧИТЬ

URL-адрес запроса: http://localhost:8000/home

Версия Django: 1.3.1

Тип исключения: TemplateSyntaxError

Значение исключения: недопустимый тег блока: ‘endblock’, ожидаемый ‘endif’

Код:

 {% extends "profile/base_with_classes.html" %}

{% block username %}
    {% if user == None %}
        Nobody
        {% else %}
            {% if user.is_authenticated %}
            {{ user.username }}
        {% else %}
            Unauthenticated User
        {% endif %}
    (% endif %}
{% endblock username %}    <==== Issue is here
 

Я не понимаю. Это находится в верхней части шаблона.

Ответ №1:

В последнем endif ( вместо {

Комментарии:

1. 1 хороший улов. Это определенно проблема. Ошибка указывает на то, что {% endblock %} вызывается до того, как оператор if закрывается {% endif %} . Это так, потому {% endif %} что оно искажено.

Ответ №2:

Ну, это не только проблема; {% endblock %} для тега на самом деле не требуется имя блока для закрытия. Попробуйте поэкспериментировать с различными случаями при входе в систему, а когда нет

Комментарии:

1. возможно, оно не требуется, но включение имени не является проблемой, и это, безусловно, делает файл более читаемым, особенно в случае вложенных блоков или очень длинных блоков.