PROBLEMA Validare una form usando django ma chiamarla con javascript

fabio_1

Utente Attivo
179
6
CPU
i5-6500
Scheda Madre
ASRock H170 Pro4S
Hard Disk
Samsung 850EVO 250GB
RAM
Corsair DD4 2133 C13 2x4GB
Scheda Video
Sapphire R9 380 4GB NITRO
Scheda Audio
Integrata + DAC Audioengine D1
Monitor
LG 24MB56HQ-B IPS
Alimentatore
XFX 550 Black
Case
Corsair Spec-03
Periferiche
Casse Edifier R1800TIII
Sistema Operativo
Windows 7
Sto usando una model form di django.
Da ciò che ho capito django riesce a validare una form in modo piuttosto sicuro, ovvero controlla i dati immessi impedendo agli hacker di mandare i loro codici malevoli.
In genere quindi per fare ciò nel template html uso:
Codice:
<form action="/url/to/my/view">...</form>
e poi nella view uso:

Codice:
if myform.is_valid():
is_valid() è il comando che provvede a validare la form. Chiedo conferma che dia una certa sicurezza.

Questa volta però la mia form non ha una action e il bottone submit farebbe partire direttamente una funzione javascript, la quale poi chiamerebbe una django view tramite ajax.
Spero sia chiaro, non è nulla di strano.

Il problema è che tramite javascript non so come fare a validare la mia form. Non conosco un comando apposito e scrivere una funzione che lo faccia non saprei da che parte farmi. Il problema non è controllare cose banali come valori massimi o minimi, campi richiesti e simili ma proteggermi dagli hacker quindi serve qualcosa di serio.
Immagino ci sia qualche soluzione standard, possibile che non ci abbiano pensato?

Pensavo a questa soluzione ma non so neanche se abbia senso:
quando chiamo la view tramite Ajax potrei inviare i dati della form e fare una cosa del genere:
Codice:
form = MyForm(field1=myvalue1, field2=myvalue2, etc)
if form.is_valid():
    ...
Può funzionare?
In genere i dati (myvalue1, myvalue2, etc) si trovano nella request.POST che è una specie di dizionario. In questo caso invece li dovrei dare io uno ad uno (tipo nel codice sopra), giusto?

Spero sia tutto chiaro, grazie per le risposte
 

Entra

oppure Accedi utilizzando

Discussioni Simili

Hot del momento