Løst: django listevisning

Hovedproblemet med listevisninger er at de er vanskelige å bruke og kan være forvirrende.

 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>

Denne koden er en klassebasert visning for en listevisning med paginering. De fire første linjene definerer klassen, modellen som skal brukes, malen som skal brukes og kontekstdataene som skal brukes. De neste fire linjene definerer get-metoden og responsen. De siste fire linjene definerer get_context_data-metoden og returnerer kontekstdataene.

Hva er en listevisning

En listevisning er en widget i Django som viser en liste over elementer.

Relaterte innlegg:

Legg igjen en kommentar