Vyřešeno: django listview

Poslední aktualizace: 09/11/2023

Hlavním problémem seznamů je to, že se obtížně používají a mohou být matoucí.

 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>

Tento kód je zobrazení založené na třídách pro zobrazení seznamu se stránkováním. První čtyři řádky definují třídu, model k použití, šablonu k použití a kontextová data, která se mají použít. Další čtyři řádky definují metodu get a odpověď. Poslední čtyři řádky definují metodu get_context_data a vracejí kontextová data.

Co je seznam

Listview je widget v Django, který zobrazuje seznam položek.

Související příspěvky: