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

时间:2018-12-11 17:27:01

标签: python django paginator

我有一个简单的博客应用程序,该应用程序使用分页器列出文章。

我希望能够在文章详细信息页面中添加按钮,以将用户定向到本文所在的页面。

我想从当前url中获取文件并将其发送给分页程序,以便将用户定向到文章所在的?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 个答案:

答案 0 :(得分:1)

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

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)

答案 1 :(得分:0)

借助Giancarlo的答案解决了。

我在下面添加到article_id

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}}