Проблема с шаблонами Django - {% if object | length> 4%} вызывает TemplateDoesNotExist: 500.html - PullRequest
8 голосов
/ 27 января 2010

У меня есть следующее в моем шаблоне.

{% block content %}
    {% for album in albumsList %}
        {% if fotosList %}
            <div class="photoalbum-wrapper">
                <h3>{{ album.title }}</h3>
                <ul class="photoalbum">
                    {% for foto in fotosList %}<li>item</li>{% endfor %}
                </ul>
                {% if fotosList|length > 4 %}
                    <a href="#" class="trigger">больше <span>&#9660;</span></a>
                {% endif %}
            </div>
        {% endif %}  
    {% endfor %}
{% endblock %}

И это вызывает TemplateDoesNotExist: 500.html.

Если я напишу просто {{ fotoList|length }}, все будет хорошо.

Ответы [ 4 ]

8 голосов
/ 22 июня 2016

Это очень старый вопрос. Поскольку более новые версии Django поддерживают операторы в операторе if из коробки, поэтому следующий код будет работать нормально:

{% if fotosList|length > 4 %}

{% endif %}
6 голосов
/ 15 апреля 2011

Используйте fotosList.count вместо fotosList|length.Вы получите желаемый результат.

3 голосов
/ 05 марта 2010

FYI если теги с операторами ==,! =, <,>, <=,> = Теперь поддерживаются в версии Django для разработки.

2 голосов
/ 28 января 2010

{% if fotosList|length > 4 %} не является допустимым тегом; вы не можете использовать больше / меньше операторов в теге Django if. (Вы можете использовать операторов в последнем выпуске разработки, но я предполагаю, что вы не используете последнюю версию из репозитория Django SVN.)

Причина, по которой вы получаете ошибку TemplateDoesNotExist, заключается в том, что Django выдает внутреннюю ошибку сервера 500 (из-за недопустимого тега), но вы не предоставили шаблон ошибки 500.html, как отмечено здесь .

...