【问题标题】:Django PaginatorDjango分页器
【发布时间】:2020-08-23 17:10:42
【问题描述】:

我正在尝试对页面进行分页,以便每页显示五个状态。输入这些代码后,分页失败。以下是我的 django 应用中用于分页和更新状态的代码。

视图(views.py 文件):

def qask(request):
    extra_data_context={}
    #if there's nothing in the field do nothing.
    if request. method=="POST":
        form =AskForm(request.POST)
        if form.is_valid():
            data=form.cleaned_data
            newask=Ask(user= request.user,status=data['status'],pub_date=datetime.datetime.now())
            newask.save()
        extra_data_context.update({'AskForm':form})
    else:
        form = AskForm()
        extra_data_context.update({'AskForm':form})
    extra_data_context.update({'Asks':Ask.objects.filter(user=request.user)})

    plan=Ask.objects.all()
    paginator=Paginator(plan, 5)

    try:
        page=int(request.GET.get('page','1'))
    except ValueError:
        page=1

    try:
        fp=paginator.page(page)
    except (EmptyPage, InvalidPage):
        fp=paginator.page(paginator.num_pages)
    return render_to_response  ('quik_ask.html',extra_data_context,context_instance=RequestContext(request))
    

模板(html文件):

{% block content %}

{% for Ask in Asks %}
<tr>
    <p>  {{Ask.user}} </p> </strong>
    <p>{{Ask.status}}</p>
    <p> {{Ask.pub_date|timesince }} ago </p> 

</tr>
{% endfor %}

<div class="pagination">
    <span class="step-links">
        {% if Asks.has_previous %}
        <a href="?page={{ Asks.previous_page_number }}">previous</a>
        {% endif %}

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

        {% if Asks.has_next %}
        <a href="?page={{ Asks.next_page_number }}">next</a>
        {% endif %}
    </span>
</div>

{% endblock %}

【问题讨论】:

  • 同时修复你的python代码的缩进。

标签: python django


【解决方案1】:

您的页面数据位于fp 变量中,但它从未提交到您的模板。相反,您试图从Asks 获取页面数据,但这与代码中的分页器无关。我不确定您要分页什么,但如果您想对过滤后的数据进行分页,它应该是这样的:

plan = Ask.objects.filter(user=request.user)
paginator=Paginator(plan, 5)
###...get you page number
try:
    asks = paginator.page(page)
except (EmptyPage, InvalidPage):
    asks = paginator.page(paginator.num_pages)
extra_data_context.update({'Asks': asks})

【讨论】:

  • 是的,我想对过滤后的数据进行分页。这样它每页只会显示五个状态。我尝试了上面的代码,但我得到: TemplateSyntaxError at /qaskp/ Caught TypeError while rendering: 'Page' object is not iterable
猜你喜欢
  • 2019-01-17
  • 2018-05-11
  • 2013-03-12
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
  • 2018-07-08
  • 2012-04-30
相关资源
最近更新 更多