Menzioni
In questa sezione tratteremo brevemente degli argomenti che possono risultare utili e che eventualmente saranno promossi in una sezione separata.
Funzioni di aggregazione
Django permette di annotare ed aggregare valori nei QuerySet usando delle espressioni tramite i metodi annotate ed aggregate. Si consiglia la lettura della documentazione ufficiale sulle aggregazioni. Questi strumenti permettono di demandare più lavoro al database sfruttandone le funzioni più avanzate.
Query N+1
L'ORM di Django si presta al creare il problema delle query N+1, dove quando si itera sopra ad un
QuerySet vengono fatte altre query per ogni occorrenza.
Per sopperire a questo si possono usare rispettivamente
select_related
per i campi ForeignKey
o OneToOneField
e
prefetch_related per i
ManyToManyField
.
Modelli astratti
Ci sono dei casi in cui potrebbe far comodo ereditare classi che estendono models.Model
per riusarne
i campi definiti. Django permette questo pattern impostando nella classe Meta l'attributo
abstract.
Indici e vincoli
Django permette di aggiungere facilmente degli indici ai nostri campi tramite l'attributo db_index. Per avere più controllo sugli indici è possibile configurarli tramite indexes nella classe Meta. Sempre nella classe Meta si possono configurare dei vincoli sui campi tramite constraints.
Viste per gestire gli errori
Django offre per default delle viste che gestiscono i maggiori casi di errore ossia 403, 404 e 500.
Le viste per gli errori 403 e 404 possono essere richiamate rispettivamente tramite le eccezioni
PermissionDenied
e Http404
, mentre la vista per gli errori 500 viene richiamata automaticamente
in caso di errori a runtime non gestiti. Si rimanda alla documentazione delle
viste di errore e alla loro
customizzazione.
Paginazione
Django comprende un sistema di paginazione già integrato nelle viste a classi.
Storage dei file in cloud
Esistono applicazioni di terze parti per usare sistemi di storage diversi dal filesystem locale per salvare i file caricati dagli utenti come ad esempio django-storages che permette di salvare i file su sistemi di object-storage di diversi provider.
Comandi
Possiamo estendere il nostro progetto con ulteriori comandi rispetto a quelli forniti da Django implementando delle classi come descrive la documentazione per scrivere i propri comandi.
Azioni per l'admin
Possiamo inoltre scrivere per interagire con i nostri modelli tramite l'interfaccia di admin delle azioni.
Dei casi d'uso per le azioni potrebbe essere aggiornare qualche flag od effetture qualche ricalcolo su dei modelli specifici usando le feature dell'admin come i filtri e la ricerca per aiutarci.
Tool utili allo sviluppo
Un paio di applicazioni utili in modalità sviluppo che richiedono la configurazione DEBUG
, e quindi non
devono essere abilitati su istanze di produzione, sono
Django Debug Toolbar e
Django Silk. Django Debug Toolbar offre informazioni contestuali
nella visualizzazione di una pagina, mentre Django Silk salva tutte le richieste fatte e permette di
ispezionarle in un secondo momento.