【问题标题】:pagination does not work in Django template page分页在 Django 模板页面中不起作用
【发布时间】:2021-01-02 10:54:51
【问题描述】:

我试图在模板页面中包含分页。但是在执行项目时遇到了模板语法错误。

它说: 无法解析余数:'==i' from 'posts.number==i'

我对此感到非常沮丧。

views.py

def posts(request):
    posts = Post.objects.filter(active=True)
    myFilter = PostFilter(request.GET, queryset=posts)
    posts = myFilter.qs

    page = request.GET.get('page')
    paginator = Paginator(posts, 3)
    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)

    context = {'posts': posts, 'myFilter': myFilter}
    return render(request, 'base/posts.html', context)

posts.html

<div class="row">
        {%if posts.has_other_pages%}
        <ul class="pagination">
            {%for i in posts.paginator.page_range%}
            {%if posts.number==i%}
            <li class="page-item"><a class="active page-link">{{i}}</a></li>
            {%else%}
            <li class="page-item"><a href="?page={{i}}" class="page-link">{{i}}</a></li>
            {%endif%}
            {%endfor%}
        </ul>
        {%endif%}
    </div>

【问题讨论】:

    标签: python django django-views django-templates django-pagination


    【解决方案1】:

    请在posts.numberi 之间添加空格。我建议这样的事情: {%if posts.number == i%} 而不是 {%if posts.number==i%}

    <div class="row">
      {%if posts.has_other_pages%}
      <ul class="pagination">
        {%for i in posts.paginator.page_range%}
        {%if posts.number == i%}
        <li class="page-item"><a class="active page-link">{{i}}</a></li>
        {%else%}
        <li class="page-item"><a href="?page={{i}}" class="page-link">{{i}}</a></li>
        {%endif%}
        {%endfor%}
      </ul>
      {%endif%}
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      相关资源
      最近更新 更多