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!