Sto cercando di trovare un modo per impedire agli utenti di inviare i miei moduli in duplice copia. Ho javascript che disabilita il pulsante di invio, ma c'è ancora un utente occasionale che trova un modo per inviare due volte.Esiste una libreria per impedire l'invio di moduli duplicati per django?
Ho una visione di una libreria riutilizzabile che potrei creare per proteggere da questo.
Nella mia biblioteca ideale, il blocco di codice sarebbe simile a questa:
try:
with acquire_lock({'field1':'abc', 'field2':'def'}) as lock:
response = #do some credit card processing
lock.response = response
except SubmissionWasDuplicate, e:
response = e.response
La tabella di blocco sarebbe simile a questa:
duplicate_submission_locks
- submission_hash # un MD5 gli argomenti presentati
- risposta # dati decapati
- created_at # utilizzato per spazzare questa tabella
- lock_expired # booleano che indica se il blocco è scaduto
Qualcuno sa se questo esiste già? Non sembra difficile da scrivere, quindi se non esiste potrei scriverlo da solo.
Date un'occhiata a questa domanda http: // StackOverflow. it/questions/320096/django-how-can-i-protect-against-concurrent-modification-data-base-entries ha alcune buone idee sul blocco ottimistico –
Il blocco ottimistico è vicino a quello che mi serve, tranne 2 cose. 1) Questo è su un modulo di registrazione quindi non c'è ancora un campo modello da aggiornare. 2) Se si tratta di una doppia presentazione, voglio che entrambe le presentazioni mostrino la pagina di successo o la pagina di prova come sarebbe appropriato. – Gattster