Настройка следующей страницы в Django (разбивка на страницы)

#django #pagination

#django #разбивка на страницы

Вопрос:

итак, я создаю веб-сайт на Django, который имеет сходство с YouTube. Я имею в виду, что будет несколько эскизов, и когда вы нажмете на один из них, вы попадете на страницу, где будет воспроизводиться видео. Теперь перейдем к коду, поскольку я не хочу все жестко кодировать, я решил использовать разбивку на страницы, но у меня проблема, потому что разбивка на страницы выполняется автоматически, и я не могу изменить эскизы для следующей страницы. Так что либо мой анализ неверен, либо есть способ сделать это правильно.

Вот код для шаблона:

 {% load static %}

{% block content %}
<div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3 mb-5">
    <div class="col">
        <div class="card shadow-sm">
            <a href="{% url 'watch1' %}" target="_blank"> <img src="{% static 'thumbnails/hacker.jpeg' %}" height="225"
                                                               width="100%"></a>

            <div class="card-body">
                <p class="card-text">
                    {% for element in page_obj %}
                    {% if element.category == 'boxing' %}

                    {{ element.description|truncatechars:50 }}

                    {% endif %}
                    {% endfor %}
                </p>
                <div class="d-flex justify-content-between align-items-center">
                    <div class="btn-group">

                    </div>
                    <small class="text-muted">9 mins</small>
                </div>
            </div>
        </div>
    </div>
    <div class="col">
        <div class="card shadow-sm">
            <a href="{% url 'watch2' %}" target="_blank"> <img src="{% static 'thumbnails/hydra.jpg' %}" height="225"
                                                               width="100%"></a>
            <div class="card-body">
                <p class="card-text">
                    {% for element in page_obj %}
                    {% if element.category == 'boxing' %}

                    {{ element.description|truncatechars:50 }}

                    {% endif %}
                    {% endfor %}
                </p>
                <div class="d-flex justify-content-between align-items-center">
                    <div class="btn-group">

                    </div>
                    <small class="text-muted">9 mins</small>
                </div>
            </div>
        </div>
    </div>
    <div class="col">
        <div class="card shadow-sm">
            <a href="{% url 'watch3' %}" target="_blank"> <img src="{% static 'thumbnails/darkweb.jpg' %}" height="225"
                                                               width="100%"></a>
            <div class="card-body">
                <p class="card-text">
                    {% for element in page_obj %}
                    {% if element.category == 'boxing' %}

                    {{ element.description|truncatechars:50 }}

                    {% endif %}
                    {% endfor %}
                <div class="d-flex justify-content-between align-items-center">
                    <div class="btn-group">

                    </div>
                    <small class="text-muted">9 mins</small>
                </div>
            </div>
        </div>
    </div>


</div>

<div class="pagination">
    <span class="step-links">
        {% if page_obj.has_previous %}
            <a href="?page=1">amp;laquo; first</a>
            <a href="?page={{ page_obj.previous_page_number }}">previous</a>
        {% endif %}

        <span class="current">
            Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
        </span>

        {% if page_obj.has_next %}
            <a href="?page={{ page_obj.next_page_number }}">next</a>
            <a href="?page={{ page_obj.paginator.num_pages }}">last amp;raquo;</a>
        {% endif %}
    </span>
</div>

{% endblock%}
 

функция в представлении

 def boxing(request):
videos = Video.objects.all()
paginator = Paginator(videos, 3)  # shows 3 videos per page
pageNumber = request.GET.get('page')
try:
    page_obj = paginator.get_page(pageNumber)
except:
    page_obj = paginator.get_page(1)
return render(request, 'boxing.html', {'page_obj': page_obj})
 

И мой цикл также отображает одно и то же для всего. Я мог бы просто использовать оператор if, чтобы точно выбрать, какое видео я хочу, но при разбивке на страницы он будет делать то же самое и на следующей странице.