Django Academy · Lezione

Sovrascrivere get_queryset e i template

Personalizzare dati e nomi dei template per ogni vista

Lezione 4 di 413 passaggi

Sovrascrivere get_queryset e i template è una lezione Django Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Django Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Django Academy include 4 lezioni in totale.

Personalizzare le viste generiche

Le viste generiche offrono impostazioni predefinite sensate, ma le applicazioni reali richiedono modifiche. Può sovrascrivere alcuni hook per personalizzarle. 🔧

Che cosa fa get_queryset

get_queryset decide su quali righe opera una vista; sovrascrivendolo può filtrare o ordinare i risultati.

Filtrare con get_queryset

Restituisca un queryset filtrato per mostrare solo le righe desiderate, ad esempio i post pubblicati.

class PostList(ListView):
    model = Post
    def get_queryset(self):
        return Post.objects.filter(published=True)

Leggere l'URL o l'utente

All'interno di get_queryset può leggere self.request, così può limitare i risultati all'utente che ha effettuato l'accesso.

def get_queryset(self):
    return Post.objects.filter(author=self.request.user)

Sovrascrivere template_name

Il percorso del template predefinito non è adatto? Imposti template_name per indicare qualsiasi template desideri.

class PostList(ListView):
    model = Post
    template_name = "blog/home.html"

Sovrascrivere la variabile di contesto

Abbini template_name a context_object_name, così il template personalizzato può leggere i dati tramite una variabile dal nome intuitivo.

class PostList(ListView):
    template_name = "blog/home.html"
    context_object_name = "posts"

Aggiungere contesto extra

Sovrascriva get_context_data per passare valori aggiuntivi, come il titolo di una pagina, insieme agli oggetti.

def get_context_data(self, **kwargs):
    ctx = super().get_context_data(**kwargs)
    ctx["title"] = "Blog"
    return ctx

Chiamare sempre prima super

In get_context_data chiami prima super(), così conserva gli oggetti già aggiunti dalla vista e può poi aggiungere i propri.

Personalizzare il suffisso

Preferisce model_browse a model_list? Imposti template_name_suffix per modificare solo il suffisso aggiunto da Django.

class PostList(ListView):
    template_name_suffix = "_browse"

Ordinare i risultati

Sovrascriva get_queryset per ordinare le righe, ad esempio mostrando prima i post più recenti.

def get_queryset(self):
    return Post.objects.order_by("-created")

Piccoli hook, grande controllo

Con queste poche sovrascritture può adattare le viste generiche a quasi ogni esigenza, mantenendone al contempo la struttura ordinata. 💡

Verifica rapida

Qual è lo scopo di sovrascrivere get_queryset?

Riepilogo: personalizzare le viste

Ha adattato le viste generiche con get_queryset, template_name e get_context_data, personalizzando dati e template senza perderne la semplicità. 🎉

Gratis per iniziare

Impara Python con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Sovrascrivere get_queryset e i template» è gratuita?

Sì — il testo completo di «Sovrascrivere get_queryset e i template» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Django Academy, passa a CoddyKit PRO. Il corso Django Academy include 4 lezioni in totale.

Cosa imparerò in «Sovrascrivere get_queryset e i template»?

Personalizzare dati e nomi dei template per ogni vista Eserciti Django Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Django Academy?

Non è richiesta alcuna esperienza precedente. Django Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Sovrascrivere get_queryset e i template»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Django Academy?

Sì. Ogni lezione Django Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. ListView e DetailView
  2. CreateView e UpdateView
  3. DeleteView e success_url
  4. Sovrascrivere get_queryset e i template
← Torna a Django Academy