Неверно сформированный тег шаблона в строке 23: "else (page_num> themes.number | add: '- 3') и (page_num <themes.number | add: '3')" - PullRequest
0 голосов
/ 08 мая 2019

Я использую следующий вид на основе функций для создания нумерации страниц.В этих представлениях нет ошибок, но то, как я использую контекст в шаблоне, создает проблему, особенно когда я добавляю {% else page_num > topics.number|add:'-3' and page_num < topics.number|add:'3' %} в шаблоны.

Views.py

def board_topics(request, pk):
    board = get_object_or_404(Board, pk=pk)
    queryset = board.topics.annotate(replies_count=Count('posts') - 1).order_by(
        '-last_updated')
    page = request.GET.get('page', 1)
    paginator = Paginator(queryset, 10)

    try:
        topics = paginator.page(page)
    except PageNotAnInteger:
        topics = paginator.page(1)
    except EmptyPage:
        topics = paginator.page(paginator.num_pages)

    return render(request, 'board/board_topics.html', {'board': board, 'topics': topics})

и template здесь:

    {% for page_num in topics.paginator.page_range %}
    {% if topics.number == page_num %}
            {{ page_num }}
    {% else page_num > topics.number|add:'-3' and page_num < topics.number|add:'3' %}
        <a class="page-link" href="?page={{ page_num }}">{{ page_num }}</a>
    {% endif %}
    {% endfor %}

Если в шаблоне я заменяю {% else page_num > topics.number|add:'-3' and page_num < topics.number|add:'3' %} на {% else %}, то он работает совершенно нормально, но мне нужен первыйработать, так как я не хочу показывать тонны нумерации страниц на моей странице, если есть тысячи тем.

Можете ли вы помочь мне с этой проблемой.Спасибо

1 Ответ

0 голосов
/ 08 мая 2019

В вашем шаблоне вы задаете условие else, которое не будет работать, поскольку оно только выполняет то, что не удовлетворяется if.

Оператор else содержит блок кода, который выполняется, еслиусловное выражение в операторе if разрешается в 0 или в значение FALSE.Оператор else является необязательным, и после него может быть не более одного оператора else.

Так что вам нужно использовать {% elif %} здесь.

Template

{% for page_num in topics.paginator.page_range %}
{% if topics.number == page_num %}
        {{ page_num }}
{% elif page_num > topics.number|add:'-3' and page_num < topics.number|add:'3' %}
    <a class="page-link" href="?page={{ page_num }}">{{ page_num }}</a>
{% endif %}
{% endfor %}

Или вы всегда можете использовать несколько if блоков

{% for page_num in topics.paginator.page_range %}
{% if topics.number == page_num %}
        {{ page_num }}
{% endif %}
{% if page_num > topics.number|add:'-3' and page_num < topics.number|add:'3' %}
    <a class="page-link" href="?page={{ page_num }}">{{ page_num }}</a>
{% endif %}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...