Comment utiliser la pagination avec Django 1.3 ?
La documentation n’est pas très claire là-dessus.
- Ce qui se passe à mon `` ?
- Ce qui se passe à mon modèle ?
- Ce qui se passe dans mon fichier URLconf ?
Comment utiliser la pagination avec Django 1.3 ?
La documentation n’est pas très claire là-dessus.
Je pense que vous demandez pour plus d'informations sur l'utilisation de la pagination avec la nouvelle classe de vues, depuis, avec des fonctions traditionnelles de vues, il est facile à trouver. J'ai trouvé que, tout en définissant l' paginate_by
variable est suffisant pour activer la pagination. Voir dans la Classe de base des vues génériques.
Par exemple, dans votre views.py
:
import models
from django.views.generic import ListView
class CarListView(ListView):
model = models.Car # shorthand for setting queryset = models.Car.objects.all()
template_name = 'app/car_list.html' # optional (the default is app_name/modelNameInLowerCase_list.html; which will look into your templates folder for that path and file)
context_object_name = "car_list" #default is object_list as well as model's_verbose_name_list and/or model's_verbose_name_plural_list, if defined in the model's inner Meta class
paginate_by = 10 #and that's it !!
Dans votre template (car_list.html
), vous pouvez inclure une section pagination comme ceci (nous avons des variables de contexte disponibles: is_paginated
, page_obj
, et paginator
).
{# .... **Normal content list, maybe a table** .... #}
{% if car_list %}
<table id="cars">
{% for car in car_list %}
<tr>
<td>{{ car.model }}</td>
<td>{{ car.year }}</td>
<td><a href="http://stackoverflow.com/car/{{ car.id }}/" class="see_detail">detail</a></td>
</tr>
{% endfor %}
</table>
{# .... **Now the pagination section** .... #}
{% if is_paginated %}
<div class="pagination">
<span class="page-links">
{% if page_obj.has_previous %}
<a href="http://stackoverflow.com/cars?page={{ page_obj.previous_page_number }}">previous</a>
{% endif %}
<span class="page-current">
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
</span>
{% if page_obj.has_next %}
<a href="http://stackoverflow.com/cars?page={{ page_obj.next_page_number }}">next</a>
{% endif %}
</span>
</div>
{% endif %}
{% else %}
<h3>My Cars</h3>
<p>No cars found!!! :(</p>
{% endif %}
{# .... **More content, footer, etc.** .... #}
La page à afficher est indiqué par un paramètre GET, l'ajout d' ?page=n
, à l'URL.
Fondamentalement, la pagination ne fait qu’ajouter un paramètre GET à votre chaîne de requête, cela signifie que rien ne doit être modifiée en URLconf pour elle de travailler.
En ce qui concerne les vues et les modèles, j’ai trouver documentation très claire :
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.