Django noreverse error app_name namespace
Il web framework Django
Con questa breve nota tecnica inauguro il filone di note e tips per il web framework Django.
Django è probabilmente il migliore web framework per python.
La curva di apprendimento non è rapidissima ma una volta capiti i meccanismi fondamentali si rivela uno strumento davvero eccezionale.
Il temutissimo noreverse
Durante lo sviluppo con Django l’errore noreverse è sicuramente il più comune.
Il più delle volte si tratta di un’errata configurazione del file urls.py.
Il problema è che anche basandosi sull’applicazione di riferimento come esempio, spesso non si riesce a scovare la causa di alcuni errori apparentemente banali.
Namespace in urls.py
Uno di questi, che mi ha portato via parecchio tempo, è l’uttilizzo dei name space tramite l’attributo app_name.
Nel momento in cui si prova a impostare nel modello (models.py) la funzione get_absolute_url ci viene costantemente riportato errore durante la chiamata della stessa come se l’url non fosse definito o la vista fosse sbagliata (il famoso errore noreverse).
Il fatto è che se abbiamo definito un app_name in urls.py (per questo esempio: app_name = ‘flights’) è necessario riferirsi a quella vista in questo modo:
def get_absolute_url(self): return reverse('flights:flight-detail', kwargs={'pk': self.pk})
Spero questo breve post vi faccia risparmiare un pò di tempo! Nel caso vi invito a lasciarmi un commento, a presto!