Как скрыть кнопку html, если в наборе запросов нет следующего сообщения в блоге в Django? - PullRequest
0 голосов
/ 21 июня 2020

Я хотел бы скрыть кнопку Next в своем блоге, если нет следующей записи в блоге.

Есть ли какой-то встроенный метод для проверки has_next has_previous или Мне нужно создать несколько logi c в моем представлении и расширить шаблон, скажем, {% if Foo %} show button {% endif %}?

views.py

def render_post(request, id):
    category_count = get_category_count()
    most_recent = Post.objects.order_by('-timestamp')[:3]
    post = get_object_or_404(Post, id=id)
    next_post_id = int(id) + 1
    previous_post_id = int(id) - 1

    PostView.objects.get(post=post)

    context = {
        'post': post,
        'id': id,
        'next_post_id': next_post_id,
        'previous_post_id': previous_post_id,
        'most_recent': most_recent,
        'category_count': category_count,
    }
    return render(request, 'post.html', context)

html

<div id="button-wrapper">
    <button class="buttons" type="submit"><a href="/post/{{previous_post_id}}">Previous</a></button>
    <button class="buttons" type="submit"><a href="/post/{{next_post_id}}">Next</a></button>
</div>

1 Ответ

2 голосов
/ 21 июня 2020

Вы можете сделать это, проверив, что предыдущие / следующие сообщения существуют, и вернув результаты в контексте:

views.py

def render_post(request, id):
    category_count = get_category_count()
    most_recent = Post.objects.order_by('-timestamp')[:3]
    post = get_object_or_404(Post, id=id)
    next_post_id = int(id) + 1
    previous_post_id = int(id) - 1

    try:
        previous_post_exists = Post.objects.filter(id=previous_post_id).exists()
    except Post.DoesNotExist:
        previous_post_exists = False

    try:
        next_post_exists = Post.objects.filter(id=next_post_id).exists()
    except Post.DoesNotExist:
        next_post_exists = False

    context = {
        'post': post,
        'id': id,
        'next_post_id': next_post_id,
        'previous_post_id': previous_post_id,
        'previous_post_exists': previous_post_exists,
        'next_post_exists': next_post_exists,
        'most_recent': most_recent,
        'category_count': category_count,
    }
    return render(request, 'post.html', context)

Вы бы затем необходимо проверить эти значения в своем шаблоне:

html

<div id="button-wrapper">
    {% if previous_post_exists %}
    <button class="buttons" type="submit"><a href="/post/{{previous_post_id}}">Previous</a></button>
    {% endif %}
    {% if next_post_exists %}
    <button class="buttons" type="submit"><a href="/post/{{next_post_id}}">Next</a></button>
    {% endif %}
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...