- 231
- 8
- CPU
- i5-6500
- Scheda Madre
- ASRock H170 Pro4S
- HDD
- Samsung 870QVO 1TB, Samsung 850EVO 250GB, HD Toshiba 2TB
- RAM
- Corsair DD4 2133 C13 2x4GB
- GPU
- Sapphire R9 380 4GB NITRO
- Audio
- Integrata + DAC Audioengine D1
- Monitor
- LG 24MB56HQ-B IPS
- PSU
- XFX 550 Black
- Case
- Corsair Spec-03
- Periferiche
- Casse Edifier R1800TIII
- OS
- Windows 10
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: