Tôi đang cố gắng tìm cách ngăn người dùng gửi hai lần biểu mẫu của tôi. Tôi có javascript vô hiệu hóa nút gửi, nhưng vẫn có một người dùng không thường xuyên tìm cách gửi hai lần.Có một thư viện để ngăn chặn đệ trình mẫu trùng lặp tồn tại cho django?
Tôi có tầm nhìn về thư viện có thể sử dụng lại mà tôi có thể tạo để bảo vệ khỏi điều này.
Trong thư viện lý tưởng của tôi, khối mã sẽ giống như thế này:
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
Bảng khóa sẽ giống như thế này:
duplicate_submission_locks
- submission_hash # một MD5 của đối số đã gửi
- phản hồi # dữ liệu đã chọn
- created_at # sử dụng để quét bảng này
- lock_expired # boolean nghĩa nếu khóa đã hết hạn
Có ai biết nếu điều này đã tồn tại? Nó có vẻ không khó để viết, vì vậy nếu nó không tồn tại tôi có thể viết nó bản thân mình.
Hãy nhìn vào câu hỏi này http: // stackoverflow. com/questions/320096/django-how-can-i-bảo vệ-chống-đồng thời-sửa đổi-of-dữ liệu-cơ sở-mục nó có một số ý tưởng tốt về khóa lạc quan –
Khóa lạc quan là gần với những gì tôi cần, ngoại trừ 2 nhiều thứ. 1) Đây là biểu mẫu đăng ký, do đó, không có trường mô hình để cập nhật. 2) Nếu đây là lần gửi đôi, tôi muốn cả hai lần gửi để hiển thị trang thành công hoặc trang thử lại sẽ phù hợp. – Gattster