Rešeno: django listview

Posljednje ažuriranje: 09/11/2023

Glavni problem sa prikazima liste je taj što su teški za upotrebu i mogu biti zbunjujući.

 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>

Ovaj kod je pogled zasnovan na klasi za prikaz liste sa paginacijom. Prva četiri reda definiraju klasu, model koji treba koristiti, predložak koji treba koristiti i podatke konteksta koji će se koristiti. Sljedeća četiri reda definiraju metodu get i odgovor. Posljednja četiri reda definiraju metodu get_context_data i vraćaju podatke konteksta.

Šta je prikaz liste

Listview je widget u Djangu koji prikazuje listu stavki.

Slični postovi: