Mettiamo di avere un form nel template 'addname.html' che richiama una view
e quindi la view da quanto leggo dovrebbe avere una forma del genere (mi riferisco agli if...else):
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
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: