El principal problema de les visualitzacions de llista és que són difícils d'utilitzar i poden ser confuses.
with pagination
I am trying to create a listview with pagination in Django. I have tried the following code but it is not working:
<code>class MyListView(ListView):
model = MyModel
template_name = 'my_template.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['page'] = self.request.GET.get('page')
return context
def get(self, request, *args, **kwargs):
response = super().get(request, *args, **kwargs)
try:
page = int(response.context['page']) - 1
if page < 0: page = 0 # first page is 1 not 0! (paginator bug?)
response.context['previous'] = str(page) if page > 0 else None # None for first page! (paginator bug?)
response.context['next'] = str(page + 2) if len(response.context['object_list']) == 10 else None # None for last page! (paginator bug?)
except KeyError: pass # no 'page' in the context... means we're on the first one! (no previous!) or last one! (no next!) or something went wrong... just ignore it and don't add anything to the context then...
return response
</code>
Aquest codi és una vista basada en classes per a una vista de llista amb paginació. Les quatre primeres línies defineixen la classe, el model a utilitzar, la plantilla a utilitzar i les dades de context que s'han d'utilitzar. Les quatre línies següents defineixen el mètode get i la resposta. Les quatre últimes línies defineixen el mètode get_context_data i retornen les dades de context.
Què és una vista de llista
Una vista de llista és un giny de Django que mostra una llista d'elements.