J'utilise ce code pour ma pagination, et je voudrais que le choix de l'utilisateur soit persistant sur tout le site (cela a été résolu jusqu'à présent) ... le seul problème est maintenant que la variable de session maintenant est permanent jusqu'à la fin de la session en fermant le navigateur. Aussi, comment puis-je obtenir les pages adjacentes affichées ... comme dans le paginateur Django de style digg. Je n'ai pas réussi à comprendre comment implémenter ceci dans mon code.Problème de pagination
Le code est le suivant:
from django.core.paginator import Paginator, InvalidPage, EmptyPage
def paginate(request, object_list, paginate_by=10):
try:
if "per_page" in request.session:
per_page = request.session["per_page"]
else:
request.session["per_page"] = int(request.REQUEST['p'])
per_page = request.session["per_page"]
request.session.set_expiry(0)
except:
per_page = 10
paginator = Paginator(object_list, per_page)
try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1
try:
items = paginator.page(page)
except (EmptyPage, InvalidPage):
items = paginator.page(paginator.num_pages)
return items
Puis, dans mon modèle, j'ai ceci à rendre les liens Pagination:
<div class="pagination" align="center">
<span class="step-links">
{% if items.has_previous %}
<a href="?page={{ items.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ items.number }} of {{ items.paginator.num_pages }}
</span>
{% if items.has_next %}
<a href="?page={{ items.next_page_number }}">next</a>
{% endif %}
</span>
</div>
pensait aussi ... je voulais juste savoir s'il n'y avait pas d'autres moyens – Stephen
J'ai essayé le code ci-dessus mais je dois avoir obtenu quelque chose de mal ... maintenant la pagination ne fonctionne pas (sauf la première page) ... ce que j'ai manqué ou omis – Stephen
Je ne peux pas regarder votre code juste maintenant. Si vous ne répondez pas à la question (cliquez sur la coche verte) et modifiez votre question pour expliquer ce que vous avez essayé de faire, cela attirera probablement plus d'attention de la part d'autres personnes. – Alasdair