代码之家  ›  专栏  ›  技术社区  ›  Adam

Django:返回到正确的分页器页面

  •  0
  • Adam  · 技术社区  · 6 年前

    我有一个简单的博客应用程序,它使用paginator列出文章。

    我想从当前url获取slug并将其发送到paginator,以便它将用户引导到文章所在的?page=X。

    我的看法:

    def blog(request):
        posts = Article.objects.all()
        paginator = Paginator(posts, 3) 
        page = request.GET.get('page') 
        posts = paginator.get_page(page) 
        return render(request,'blog.html',{'posts':posts})
    
    def article_id(request,slug):
        articleid = Article.objects.get(slug=slug)
        return render(request, 'blogid.html', {'article':articleid})
    

    我的网址:

    urlpatterns = [
        url(r'^$', views.blog, name = 'blog'),
        url(r'^(?P<slug>[\w-]+)/$', views.article_id, name = 'article_id'),
       ]
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Giancarlo Ventura    6 年前

    您可以通过以下方式获取对象的位置:

    position=Article.objects.filter(your_filter_key=your_filter_value).order_by('other_filter_order').count()
    

    items_per_page=yout_items_per_page
    page = int(position/items_per_page)
    
        2
  •  0
  •   Adam    6 年前

    通过Giancarlo的回答解决了这个问题。

    我在下面的文章中添加了

    def article_id(request,slug):
    articleid = Article.objects.get(slug=slug)
    position = Article.objects.filter(date__gt=articleid.date).count()
    page = str(int((position)/3)+1)
    return render(request, 'blogid.html', {'article':articleid, 'page':page})
    

    然后在模板中的链接看起来像/blog/?page={{page}