Existiert für Django eine Bibliothek, um doppelte Formularübermittlungen zu verhindern?

Ich versuche zu verhindern, dass Benutzer meine Formulare doppelt übermitteln. Ich habe Javascript, das die Schaltfläche "Senden" deaktiviert, aber es gibt immer noch einen gelegentlichen Benutzer, der eine Möglichkeit zum doppelten Senden findet.

Ich habe die Vision einer wiederverwendbaren Bibliothek, die ich erstellen könnte, um mich davor zu schützen.

In meiner idealen Bibliothek würde der Codeblock ungefähr so aussehen:

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

Die Sperrtabelle würde ungefähr so aussehen:

duplicate_submission_locks

submission_hash # ein MD5 der übergebenen ArgumenteAntwort # Eingelegte Datencreated_at # wird zum Sweepen dieser Tabelle verwendetlock_expired # Boolescher Wert, der angibt, ob die Sperre abgelaufen ist

Weiß jemand, ob dies bereits vorhanden ist? Es scheint nicht schwierig zu sein zu schreiben, also wenn es nicht existiert, kann ich es selbst schreiben.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage