1

Dans mon projet django j'utilise Django Endless Pagination pour la pagination et haystack + elasticsearch pour la recherche. Lorsque je recherche un contenu spécifique, la méthode de requête est POST et le résultat est correct, mais lorsque j'essaie de paginer dans le résultat de la recherche, la requête suivante est reçue comme GET et le résultat de la recherche est perdu.Le résultat de la recherche échoue avec pagination

Voici mon code:

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

et mon modèle

{% load endless %} 
{% lazy_paginate students %} 
{% for student in students %} 
     // Do the displaying here 
{% endfor %} 
{% show_more %} 

Répondre

0

Il est d'obtenir la demande parce que la méthode standard de demande de recherche est GET. Ma recommandation est de changer la méthode de demande pour la recherche dans GET. Ou, si vous souhaitez continuer à utiliser POST, vous devez modifier la méthode de demande pour chaque lien de page. C'est une bonne bibliothèque pour changer la méthode de demande de lien hypertexte. https://github.com/rails/jquery-ujs

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

D'abord quand je recherche la méthode est POST et je suis en mesure de filtrer le résultat et afficher correctement les résultats de la recherche, mais quand je paginate à la 2e page sur la recherche du résultat, la demande est modifiée GET et la liste complète est renvoyée. Dans la requête GET de la deuxième page, les paramètres de la requête sont uniquement {u'querystring_key ': [u'page'], u'page ': [u'2']} –

+0

Oui, car la méthode de requête par défaut de lien hypertexte est GET . Vous devez le changer en POST. –

+0

J'ai corrigé le problème en ajoutant des sessions, j'ai obtenu la réponse de ce [link] (http://stackoverflow.com/questions/2266554/paginating-the-results-of-a-django-forms-post-request) –