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 %}
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']} –
Oui, car la méthode de requête par défaut de lien hypertexte est GET . Vous devez le changer en POST. –
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) –