Django Academy · Lektion

Åsidosätta get_queryset och mallar

Anpassa data och mallnamn för varje vy

Lektion 4 av 413 steg

Å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 ctx

Anropa 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. 🎉

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 ”Å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

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