I FORM IN DJANGO

Django

In questo post vedremo come creare un form di contatto in Django. Vediamo innanzitutto cosa sono i forms in Django con delle slide. Lascio inoltre il link ufficiale alla documentazione Forms.

Form
Form
Form
Form
Form

PREPARAZIONE DELL’AMBIENTE

Ripercorriamo tutti gli step fondamentali per la creazione di una nuova applicazione web in Django.

  • Creazione ambiente virtuale che io ho chiamato venv con il seguente comando: python -m venv venv
  • Attivazione dell’ambiente virtuale con il comando: venv\Scripts\activate posizionandosi nel folder root scelto per il progetto.
  • Installazione di Django con il comando pip install django
  • Upgrade di pip qualora non fosse aggiornato con il comando: django.exe -m pip install –upgrade pip

CREAZIONE DEL PROGETTO

  • Creazione di un nuovo progetto che io ho chiamato DjangoThirdLevel con il seguente comando: django-admin startproject DjangoThirdLevel
  • Creazione di una nuova applicazione formsApp con il seguente comando: python manage.py startapp formsApp posizionandosi nella directory in cui c’è il file manage.py.

Una volta creata l’applicazione apriamo il file settings.py del progetto, registriamo la nostra applicazione, cambiamo lingua in ‘it’ e impostiamo il template dei due file HTML che ci serviranno.

Settings.py

Come impostato nel TEMPLATES creiamo due cartelle, una che chiamiamo templates sotto la directory formsApp e annidiamo una seconda cartella che chiameremo come l’applicazione formsApp. All’interno di quest’ultima creiamo due file HTML, home.html e contatto.html. Andiamo nel sito di Bootstrap, copiamo lo starter template e lo incolliamo nelle due pagine.

Form

Andiamo nel file views.py dell’applicazione e gestiamo questi due template HTML.

views.py

Andiamo a registrare le views nel file urls.py.

urls.py

Avviamo il nostro server di sviluppo e verifichiamo che tutto stia funzionando. Adesso che abbiamo predisposto il tutto creiamo il file forms.py all’interno dell’applicazione. Possiamo ora andare a definire in questo file tutti i vari campi della programmazione a oggetti che ci servono, oltre ai campi possiamo definire le label, i widget che vogliamo usare, specificare la lunghezza del campo con max_length etc. Vediamo come ho creato la classe FormContatto.

forms.py

Ora andiamo a modificare la view in modo che il suo context passi il form appena creato alla pagina HTML. Una volta fatto questo proviamo a compilare il form di contatto. Vedrai che si ottiene un errore.

views.py
form contact
Error

Questo perché è fallita la verifica del CSRF. Si tratta di una misura di sicurezza implementata in Django che controlla gli attacchi Site Request Forgery. Possiamo utilizzare questo tag dopo il tag form per avere una transazione sicura.

 {% csrf_token %}

html

Una volta sistemato l’errore se controlliamo l’output ci accorgiamo che la richiesta è andata a buon fine (Status Code = 200) tuttavia la nostra view non è predisposta ancora per elaborare i dati inviati. Vediamo come modificarla.

views.py

Come si vede dal codice sopra riportato, la prima cosa che andiamo a controllare è se siamo in GET o in POST. Se siamo in POST possiamo creare il form FormContatto passando ad esso tutti i dati della request. Viceversa, se non è una richiesta POST, ramo else, vado semplicemente a inizializzare il form FormContatto. Se siamo in POST e il form è valido vado a mostrare i dati inseriti nella console e la request ritorna con un HttpResponse. Viceversa se il form non è valido si presentano nuovamente i dati all’utente per la correzione. 

LINK AI POST PRECEDENTI

PREVIOUS POST LINKS

LINK AL CODICE SU GITHUB

GITHUB