django - 搜索结果因分页而失败

标签 django elasticsearch pagination django-haystack django-endless-pagination

在我的django项目中,我使用Django Endless Pagination进行分页,并使用haystack + elasticsearch进行搜索。当我搜索特定内容时,请求方法为POST且结果正确,但是当我尝试对搜索结果进行分页时,下一个请求将作为GET接收,并且搜索结果将丢失,并且整个内容将被迭代。

这是我的代码:

views.py

@login_required(login_url="/")
@page_template('students/students_listing_block.html')
def students(request, template='students/students_listing.html', extra_context=None, *args, **kwargs):

    sqs = SearchQuerySet().models(Student)
    if request.POST:
        searchcontent = request.POST.get('content', None)
        if searchcontent:
            sqs = sqs.filter(content=searchcontent)
    students = sqs.order_by('-created_at')
    context = {
        'students': students,
    }
    if extra_context is not None:
        context.update(extra_context)
    return render_to_response(template, context,
           context_instance=RequestContext(request))

和我的模板
 {% load endless %}
 {% lazy_paginate students %}
 {% for student in students %}
      // Do the displaying here
 {% endfor %}
 {% show_more %}

最佳答案

因为搜索的标准请求方法是GET,所以它是get请求。我的建议是将搜索的请求方法更改为GET。

或者,如果您想继续使用POST,则需要更改每个页面链接的请求方法。这是一个更改超链接请求方法的好库。 https://github.com/rails/jquery-ujs

<a href="/asd" data-method="post">TEST</a>

关于django - 搜索结果因分页而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31422818/

相关文章:

python - 接收错误: "TypeError: can only concatenate list (not "tuple") to list"

python - Django Admin - 如何防止删除某些内联

apache-spark - Spark 无法检测 ES 版本 - 如果网络/Elasticsearch 集群不可访问,通常会发生这种情况

elasticsearch - 如何将用户定义的字段和值添加到Elasticsearch查询

sql - 处理大表 - 如何逐页选择记录?

python - Django - Fabric 和 collecstatic - 无法打开文件 'manage.py'

python - 下载文件并在响应中重定向

elasticsearch - '错误无法通过http://localhost:9200与Elasticsearch联系。' -基巴纳

angular - Angular2 中嵌套列表的分页

html - 水平滚动并排放置 li 元素