【问题标题】:Django filters with pagination not keeping state [duplicate]带有分页的Django过滤器不保持状态[重复]
【发布时间】:2018-02-20 05:55:53
【问题描述】:

在我的 django 项目中,我使用 django 过滤器和分页。当我单击下一个链接转到下一页时,我失去了我的状态。我尝试了here 的一些想法,但还没有成功。关于为什么会发生这种情况的任何想法?

html

<div class="col-xs-4  clearfix text-center">
            {% if relations.has_next %}
            <div class="pull-right">
                <a href="?page={{ relations.next_page_number }}{% if createdBy %}&createdBy={{ createdBy }}{% endif %}{% if project %}&project={{ project }}{% endif %}{% if createdBefore %}&createdBefore={{ createdBefore }}{% endif %}}">Next &raquo;</a>
            </div>
            {% endif %}
        </div>

查看

def relations(request):
    from annotations.filters import RelationSetFilter

    qs = RelationSet.objects.all()
    filtered = RelationSetFilter(request.GET, queryset=qs)
    qs = filtered.qs
    for r in qs:
        print r.__dict__

    paginator = Paginator(qs, 20)
    page = request.GET.get('page')



    try:
        relations = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        relations = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        relations = paginator.page(paginator.num_pages)

    context = {
        'paginator': paginator,
        'relations': relations,
        'params': request.GET.urlencode(),
        'filter': filtered,
    return render(request, 'annotations/relations.html', context)

网址

应用过滤器时的网址:

/relations/?createdBy=&occursIn=&createdAfter=&createdBefore=&terminal_nodes=&project=1

切换页面时的网址:

/relations/?page=2

【问题讨论】:

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


    【解决方案1】:

    您没有在上下文中传递参数(例如 createdBy ),因此它们在 HTML 中始终为空

    【讨论】:

    • 这不是不好的做法,因为我的数据来自获取请求并且没有数据经过验证。
    猜你喜欢
    • 2018-07-10
    • 2021-07-08
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    相关资源
    最近更新 更多