DOMANDA Django view con form: come e perchè?

Pubblicità

fabio_1

Utente Attivo
Messaggi
244
Reazioni
8
Punteggio
43
Mettiamo di avere un form nel template 'addname.html' che richiama una view

Codice:
  <form action="{% url 'lists:importname' %}" method="post">
    ...
  </form>

e quindi la view da quanto leggo dovrebbe avere una forma del genere (mi riferisco agli if...else):

Codice:
def ImportName(request):
    if request.method == 'POST':
        name_form = NameForm(request.POST)
        if name_form.is_valid():
            ...
       else:
            print('form isnt valid')
            print(name_form.errors)
            context = {}
            context['name_form'] = name_form
            return render(request, 'addname.html', context)
    else:
        print('form isnt post')
        return redirect('lists:addname')

Non mi è chiaro a cosa servano e cosa dovrei scrivere negli else.

Partiamo dal secondo che più o meno penso di aver capito: if name_form.is_valid().
Da ciò che ho capito in teoria il browser dovrebbe impedirmi di postare la form se non è compilata come si deve ma per sicurezza inserisco questo controllo. Se non è valida ritorno alla vista con gli errori stampati. In pratica è un paracadute in caso i campi siano definiti male (???) o il browser non riconosca le validazioni necessarie. Giusto?

Ora guardiamo il primo: if request.method == 'POST'.
A questa view dovrei arrivare solo usando la form ed essa ha method="post" quindi questo controllo non dovrebbe essere sempre soddisfatto?
Forse mi serve in caso qualcuno raggiri il mio codice chiamando la funzione con qualche magheggio da hacker? oppure cosa?
E in tal caso cosa dovrei fare? io ho scelto di ricaricare la vista con la form vuota ma forse merita fare altro? tentare di recuperare i dati eventualmente inseriti e riproporli nei fields? avverire che qualcosa è andato storto (in parte lo faccio con quel print ma bisogna farci caso)?

Grazie
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top