Åsidosätta get_queryset och mallar
Anpassa data och mallnamn för varje vy
Åsidosätta get_queryset och mallar är en gratis lektion i Django Academy på CoddyKit. Detta är lektion 4 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.
Gör generiska vyer till dina egna
Generiska vyer ger rimliga standardvärden, men riktiga appar behöver anpassningar. Du åsidosätter några hooks för att anpassa dem. 🔧
Vad get_queryset gör
get_queryset avgör vilka rader en vy arbetar med, så genom att åsidosätta den kan du filtrera eller sortera resultaten.
Filtrera med get_queryset
Returnera en filtrerad queryset för att bara visa de rader du vill ha, till exempel publicerade inlägg.
class PostList(ListView):
model = Post
def get_queryset(self):
return Post.objects.filter(published=True)Läsa URL:en eller användaren
Inuti get_queryset kan du läsa self.request, så att du kan begränsa resultaten till den inloggade användaren.
def get_queryset(self):
return Post.objects.filter(author=self.request.user)Åsidosätt template_name
Gillar du inte standardsökvägen till mallen? Ange template_name för att peka på valfri mall.
class PostList(ListView):
model = Post
template_name = "blog/home.html"Åsidosätt kontextvariabeln
Kombinera template_name med context_object_name så att din anpassade mall kan läsa värdet via en tydlig variabel.
class PostList(ListView):
template_name = "blog/home.html"
context_object_name = "posts"Lägg till extra kontext
Åsidosätt get_context_data för att skicka med extra värden, till exempel en sidtitel, tillsammans med objekten.
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx["title"] = "Blog"
return ctxAnropa alltid super först
I get_context_data anropar du super() först, så att du behåller objekten som vyn redan har lagt till och sedan kan lägga till dina egna.
Anpassa suffixet
Föredrar du model_browse framför model_list? Ange template_name_suffix för att bara ändra suffixet som Django lägger till.
class PostList(ListView):
template_name_suffix = "_browse"Sortera resultaten
Åsidosätt get_queryset för att sortera rader, till exempel genom att visa de nyaste inläggen först.
def get_queryset(self):
return Post.objects.order_by("-created")Små hooks, stor kontroll
Med dessa få åsidosättningar kan du anpassa generiska vyer till nästan alla behov och samtidigt behålla deras tydliga struktur. 💡
Snabb kontroll
Vad är syftet med att åsidosätta get_queryset?
Sammanfattning: Anpassa vyer
Du formade generiska vyer med get_queryset, template_name och get_context_data och anpassade data och mallar utan att förlora enkelheten. 🎉
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 ”Åsidosätta get_queryset och mallar” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Django Academy, inklusive ”Åsidosätta get_queryset och mallar”, 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 ”Åsidosätta get_queryset och mallar”?
Anpassa data och mallnamn för varje vy 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 4 av 4.
Hur lång tid tar lektionen ”Åsidosätta get_queryset och mallar”?
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