Sidekontroller i ListView
Tilføj links til næste og forrige side i skabeloner
Sidekontroller i ListView er en gratis Django Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Django Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Django Academy-kurset indeholder 4 lektioner i alt.
Indbygget sideinddeling
Gode nyheder: ListView kan stå for sideinddelingen for dig. Du skriver næsten ingen kode, og Django opdeler automatisk queryset'et i sider. 🚀
Indstil paginate_by
Tilføj blot én attribut. Når du angiver paginate_by, fortæller du ListView, hvor mange elementer hver side skal vise.
class ArticleList(ListView):
model = Article
paginate_by = 10Variablen page_obj
Når sideinddeling er aktiveret, modtager din skabelon et page_obj. Det er det samme Page-objekt, som du mødte tidligere, og det er klar til at blive gennemløbet og undersøgt.
Gennemløb den aktuelle side
I skabelonen gennemløber du page_obj for kun at vise elementerne på denne side. Django har allerede begrænset forespørgslen til dig.
{% for article in page_obj %}
{{ article.title }}
{% endfor %}Læs sidetallet
ListView henter sidetallet fra forespørgselsstrengen ?page= i URL'en, så et link til ?page=2 viser den anden side.
Vis et link til den forrige side
Beskyt linket tilbage med has_previous, så det kun vises, når der faktisk findes en tidligere side, du kan gå til.
{% if page_obj.has_previous %}
Prev
{% endif %}Link til den forrige side
Byg href-attributten inde i blokken ved hjælp af previous_page_number, så linket peger én side tilbage.
<a href="?page={{ page_obj.previous_page_number }}">Prev</a>Vis et link til den næste side
Brug samme logik til navigation fremad. Omslut linket til den næste side med en kontrol af has_next, så det skjules på den sidste side.
{% if page_obj.has_next %}
Next
{% endif %}Vis side X af Y
Giv brugerne tryghed med en tæller. Kombiner number med paginatorens num_pages for at udskrive "Side 2 af 5".
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}Tilpasset kontekstnavn
Foretrækker du en mere beskrivende løkkevariabel? Angiv context_object_name, så navngiver Django sidelisten, som du ønsker.
context_object_name = 'articles'Sæt det hele sammen
Én attribut plus en lille skabelonblok giver dig fuld kontrol over siderne: forrige, næste og en positionstæller – uden at du skal skrive logik i visningen.
Hurtigt tjek
Din ListView-skabelon skal bruge elementerne på den aktuelle side.
Opsummering
Du aktiverede sideinddeling med paginate_by, gennemløb page_obj og byggede links til forrige og næste side, beskyttet af has_previous og has_next. Rene lister uden kode i visningen. 🎉
Lær Python med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “Sidekontroller i ListView” gratis?
Ja — alle 3 lektioner i læringssporet Django Academy, inklusive “Sidekontroller i ListView”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Django Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Sidekontroller i ListView”?
Tilføj links til næste og forrige side i skabeloner Du øver dig i Django Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Django Academy?
Der kræves ingen tidligere erfaring. Django Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Sidekontroller i ListView”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Django Academy-lektion?
Ja. Alle Django Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Paginator-klassen
- Sidekontroller i ListView
- Skrivning af TestCase og assertions
- Test Client og fixtures