Django Academy · Lektion

ListView och DetailView

Visa samlingar och enskilda poster

Lektion 1 av 413 steg

ListView och DetailView är en gratis lektion i Django Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Django Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Django Academy innehåller totalt 4 lektioner.

Två sidor ni alltid behöver

Nästan alla appar visar en lista med saker och en sida för en enskild sak. Django levereras med generiska vyer som bygger båda åt er. ✨

Möt ListView

ListView hämtar flera objekt och skickar dem till en mall, så ni slipper skriva frågan och renderingsanropet själva.

Koppla ListView till en modell

Ni anger en modell för ListView, så kör den automatiskt frågan för varje rad i den tabellen.

from django.views.generic import ListView
from .models import Post

class PostList(ListView):
    model = Post

Det förvalda mallnamnet

ListView letar efter en mall med namnet app/model_list.html, till exempel post_list.html, om ni inte skriver över det.

object_list i mallen

I mallen kommer raderna in som object_list, redo för att ni ska iterera över och visa dem.

{% for post in object_list %}
  <li>{{ post.title }}</li>
{% endfor %}

Tydligare namn med context_object_name

Ange context_object_name så att mallvariabeln får ett naturligt namn, till exempel posts i stället för object_list.

class PostList(ListView):
    model = Post
    context_object_name = "posts"

Möt DetailView

DetailView hämtar ett enda objekt med hjälp av dess nyckel och renderar en fokuserad sida för det.

Så hittar DetailView objektet

DetailView läser en pk eller slug från URL:en och kör sedan get() för att hämta exakt den posten.

from django.views.generic import DetailView

class PostDetail(DetailView):
    model = Post

Detaljmallen och object

DetailView renderar app/model_detail.html och gör posten tillgänglig som object i mallen.

<h1>{{ object.title }}</h1>
<p>{{ object.body }}</p>

Koppla in dem i URL:er

Varje generisk vy blir en URL med as_view(), som omvandlar klassen till en anropsbar vy.

path("posts/", PostList.as_view()),
path("posts/<int:pk>/", PostDetail.as_view()),

Mindre kod, samma resultat

Tillsammans ersätter dessa två vyer dussintals rader standardkod och ger er list- och detaljsidor nästan utan extra arbete. 🚀

Snabbkontroll

Varifrån hämtar DetailView objektet som den visar?

Sammanfattning: lista och detalj

Ni har mött ListView för samlingar och DetailView för en post, kopplat in båda med as_view() och sluppit mängder av standardkod. 🎉

Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”ListView och DetailView” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Django Academy, inklusive ”ListView och DetailView”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Django Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”ListView och DetailView”?

Visa samlingar och enskilda poster Ni övar på Django Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Django Academy?

Du behöver inga förkunskaper. Utbildningen i Django Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”ListView och DetailView”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Django Academy-lektionen?

Ja. Varje Django Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. ListView och DetailView
  2. CreateView och UpdateView
  3. DeleteView och success_url
  4. Åsidosätta get_queryset och mallar
← Tillbaka till Django Academy