Risolto: django listview

Ultimo aggiornamento: 09/11/2023

Il problema principale con le listview è che sono difficili da usare e possono creare confusione.

 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 &lt; 0: page = 0  # first page is 1 not 0! (paginator bug?)
            response.context['previous'] = str(page) if page &gt; 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>

Questo codice è una visualizzazione basata su classi per una visualizzazione elenco con impaginazione. Le prime quattro righe definiscono la classe, il modello da utilizzare, il modello da utilizzare ei dati di contesto da utilizzare. Le quattro righe successive definiscono il metodo get e la risposta. Le ultime quattro righe definiscono il metodo get_context_data e restituiscono i dati di contesto.

Che cos'è una visualizzazione elenco

Un listview è un widget in Django che visualizza un elenco di elementi.

Related posts: