【问题标题】:Adding a tag to a pagination element django将标签添加到分页元素django
【发布时间】:2022-08-18 23:36:22
【问题描述】:

创建分页时,一切正常。添加了 (?page= 页码选择) 分页。

如何将分页页码添加到其对象?

选择对象并重新加载页面时,我需要在 URL 中拼出它(/?page=pagination number)。

并且分页保留在所选页面上。

class MovieShow(DetailView):
model = Movie
template_name = \'movies/movie_play.html\'
context_object_name = \'movie\'

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context[\'object_list\'] = Movie.objects.filter(course__slug=self.kwargs[\'course_slug\'])
    context[\'title\'] = context[\'movie\']

    paginator = Paginator(context[\'object_list\'], 1)
    page = self.request.GET.get(\'page\')
    try:
        context[\'object_list\'] = paginator.page(page)
    except PageNotAnInteger:
        context[\'object_list\'] = paginator.page(1)
    except EmptyPage:
        context[\'object_list\'] = paginator.page(paginator.num_pages)

    return context

这就是我在模板中呈现分页的方式

<div class=\"pagination\" id=\"pagination\">
<span class=\"step-links\" >
    {% if object_list.has_previous %}
        <a class=\"page-link\" href=\"?page=1\"> << </a>
        <a class=\"page-link\" href=\"?page={{ object_list.previous_page_number }}\"> < </a>
    {% endif %}

    <span class=\"current\">
       {{ object_list.number }} из {{ object_list.paginator.num_pages }}
    </span>

    {% if object_list.has_next %}
        <a class=\"page-link\" href=\"?page={{ object_list.next_page_number }}\"> > </a>
        <a class=\"page-link\" href=\"?page={{ object_list.paginator.num_pages }}\"> >> </a>
    {% endif %}
    
</span>

所以我搜索了分页内的元素,我想在上面挂上分页页码。

我真的希望我正确地提出了这个问题。 我会很高兴得到任何帮助!

<div class=\"video_courses\" id=\"block-posts\">
{% for c in object_list %}
<a class=\"a_hover\" href=\"{{ c.get_absolute_url }}\">
    <div class=\"video_courses_block\">
        <div class=\"video_courses_block_img\"><img src=\"{{ c.poster.url }}\" alt=\"\"></div>
        <div class=\"video_courses_block_text\">
            <div class=\"video_courses_block_text_title\"><h2>[ {{ c.author }} ] {{ c.title }}</h2></div>
            
            <div class=\"video_courses_block_text_navigation\">
                <div class=\"video_courses_block_text_left\">{{ c.category }}</div>
                <div class=\"video_courses_block_text_rig\">{{ course.movie_set.count }}</div>
            </div>
        </div>
    </div>
</a>
{% endfor %}
{% 包括 \'pagination.html\' %}

    标签: django pagination


    【解决方案1】:

    您只需在链接中添加if 并指定页码

    {% for c in object_list %}
    {% if object_list.number %}
    <a class="a_hover" href="{{ c.get_absolute_url }}?page={{ object_list.number }}">
        {% endif %}
        <div class="video_courses_block">
            <div class="video_courses_block_img"><img src="{{ c.poster.url }}" alt=""></div>
            <div class="video_courses_block_text">
                <div class="video_courses_block_text_title">
                    <h2>[ {{ c.author }} ] {{ c.title }}</h2>
                </div>
    
                <div class="video_courses_block_text_navigation">
                    <div class="video_courses_block_text_left">{{ c.category }}</div>
                    <div class="video_courses_block_text_rig">{{ course.movie_set.count }}</div>
                </div>
            </div>
        </div>
    </a>
    {% endfor %}
    </div>
    {% include 'pagination.html' %}
    

    【讨论】: