Flera mixins för objekt

MultipleObjectMixin

class django.views.generic.list.MultipleObjectMixin

En mixin som kan användas för att visa en lista med objekt.

Om paginate_by anges kommer Django att paginera de resultat som returneras av detta. Du kan ange sidnumret i URL:en på ett av två sätt:

  • Använd parametern page i URLconf. Så här kan till exempel din URLconf se ut:

    path("objects/page<int:page>/", PaginatedView.as_view()),
    
  • Skicka sidnumret via parametern page query-string. Till exempel: skulle en URL se ut så här:

    /objects/?page=3
    

Dessa värden och listor är 1-baserade, inte 0-baserade, så den första sidan skulle representeras som sidan 1.

Mer information om paginering finns i Pagineringsdokumentation.

Som ett specialfall är det också tillåtet att använda last som värde för page:

/objects/?page=last

Detta gör att du kan komma till den sista resultatsidan utan att först behöva avgöra hur många sidor det finns.

Observera att page måste vara antingen ett giltigt sidnummer eller värdet last; alla andra värden för page kommer att resultera i ett 404-fel.

Förlänger

Metoder och egenskaper

allow_empty

En boolean som anger om sidan ska visas om inga objekt finns tillgängliga. Om detta är False och inga objekt finns tillgängliga, kommer vyn att skicka en 404 istället för att visa en tom sida. Som standard är detta True.

model

Den modell som denna vy ska visa data för. Att ange model = Foo är i praktiken detsamma som att ange queryset = Foo.objects.all(), där objects står för Foo default manager <default-managers>`.

queryset

En QuerySet som representerar objekten. Om det anges ersätter värdet för queryset det värde som anges för model.

Varning

queryset är ett klassattribut med ett mutabelt värde så försiktighet måste iakttas när det används direkt. Innan du använder det, anropa antingen dess all()-metod eller hämta det med get_queryset() som tar hand om kloningen bakom kulisserna.

ordering

En sträng eller en lista med strängar som anger den ordning som ska tillämpas på queryset. Giltiga värden är desamma som för order_by().

paginate_by

Ett heltal som anger hur många objekt som ska visas per sida. Om detta anges kommer vyn att paginera objekt med paginate_by-objekt per sida. Vyn förväntar sig antingen en page parameter i frågesträngen (via request.GET) eller en page variabel som anges i URLconf.

paginate_orphans

Ett heltal som anger antalet ”overflow”-objekt som den sista sidan kan innehålla. Detta utökar paginate_by-gränsen på den sista sidan med upp till paginate_orphans, för att förhindra att den sista sidan har ett mycket litet antal objekt.

page_kwarg

En sträng som anger det namn som ska användas för sidparametern. Vyn förväntar sig att denna parameter är tillgänglig antingen som en parameter i en frågesträng (via request.GET) eller som en kwarg-variabel som anges i URLconf. Standardvärdet är page.

paginator_class

Den paginatorklass som ska användas för paginering. Som standard används django.core.paginator.Paginator. Om den anpassade paginatorklassen inte har samma konstruktörsgränssnitt som django.core.paginator.Paginator, måste du också tillhandahålla en implementering för get_paginator().

context_object_name

Anger namnet på den variabel som ska användas i sammanhanget.

get_queryset()

Hämta listan med objekt för den här vyn. Detta måste vara en iterabel och kan vara en queryset (i vilken queryset-specifikt beteende kommer att aktiveras).

get_ordering()

Returnerar en sträng (eller en iterabel av strängar) som definierar den ordning som ska tillämpas på queryset.

Returnerar ordering som standard.

paginate_queryset(queryset, page_size)

Returnerar en 4-tupel som innehåller (paginator, page, object_list, is_paginated).

Konstruerad genom att paginera queryset i sidor av storleken page_size. Om begäran innehåller ett page-argument, antingen som ett URL-argument eller som ett GET-argument, kommer object_list att motsvara objekten från den sidan.

get_paginate_by(queryset)

Returnerar antalet objekt som ska pagineras efter, eller None för ingen paginering. Som standard returnerar detta värdet för paginate_by.

get_paginator(queryset, per_page, orphans=0, allow_empty_first_page=True)

Returnerar en instans av den paginator som ska användas för den här vyn. Som standard instansieras en instans av paginator_class.

get_paginate_orphans()

Ett heltal som anger antalet ”overflow”-objekt som den sista sidan kan innehålla. Som standard returnerar detta värdet för paginate_orphans.

get_allow_empty()

Returnerar en boolean som anger om sidan ska visas om inga objekt finns tillgängliga. Om denna metod returnerar False och inga objekt finns tillgängliga, kommer vyn att skicka en 404 istället för att visa en tom sida. Som standard är detta True.

get_context_object_name(object_list)

Returnerar namnet på den kontextvariabel som kommer att användas för att innehålla listan över data som denna vy manipulerar. Om object_list är en queryset av Django-objekt och context_object_name inte är inställt, kommer kontextnamnet att vara model_name för den modell som queryset är sammansatt från, med postfixet '_list tillagt. Till exempel: skulle modellen Article ha ett kontextobjekt med namnet article_list.

get_context_data(**kwargs)

Returnerar kontextdata för visning av listan med objekt.

Kontext

  • object_list: Listan över objekt som visas i den här vyn. Om context_object_name anges, kommer den variabeln också att ställas in i kontexten, med samma värde som object_list.

  • is_paginated: En boolean som anger om resultaten är paginerade. Specifikt sätts detta till False om ingen sidstorlek har angetts, eller om de tillgängliga objekten inte sträcker sig över flera sidor.

  • paginator: En instans av django.core.paginator.Paginator. Om sidan inte är paginerad kommer denna kontextvariabel att vara None.

  • page_obj: En instans av django.core.paginator.Page. Om sidan inte är paginerad kommer denna kontextvariabel att vara None.

MultipleObjectTemplateResponseMixin

class django.views.generic.list.MultipleObjectTemplateResponseMixin

En mixin-klass som utför mallbaserad svarsrendering för vyer som arbetar med en lista över objektinstanser. Kräver att vyn som den mixas med tillhandahåller self.object_list, listan över objektinstanser som vyn arbetar med. self.object_list kan vara, men behöver inte vara, en QuerySet.

Förlänger

Metoder och egenskaper

template_name_suffix

Suffixet som ska läggas till det autogenererade kandidatmallnamnet. Standardsuffixet är _list.

get_template_names()

Returnerar en lista med namn på kandidatmallar. Returnerar följande lista:

  • värdet av template_name på vyn (om det anges)

  • <app_label>/<modell_namn><template_namn_suffix>.html`