ListView och DetailView
Visa samlingar och enskilda poster
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 = PostDet 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 = PostDetaljmallen 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. 🎉
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
- ListView och DetailView
- CreateView och UpdateView
- DeleteView och success_url
- Åsidosätta get_queryset och mallar