gpt4 book ai didi

python - django 是否存在防止重复表单提交的库?

转载 作者:IT老高 更新时间:2023-10-28 21:01:37 30 4
gpt4 key购买 nike

我正在尝试找到一种方法来防止用户重复提交我的表单。我有禁用提交按钮的 javascript,但仍然有偶尔的用户找到双重提交的方法。

我有一个可重复使用的库的愿景,我可以创建它来保护它。

在我理想的库中,代码块应该是这样的:

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

锁表看起来像这样:

duplicate_submission_locks

  • submission_hash # 提交参数的 MD5
  • 响应#腌制数据
  • created_at #用来扫这个表
  • lock_expired # 表示锁是否过期的 bool 值

有谁知道这是否已经存在?好像不难写,如果不存在我自己写吧。

最佳答案

您可以使用 session 来存储哈希

import hashlib

def contact(request):
if request.method == 'POST':
form = MyForm(request.POST)
#join all the fields in one string
hashstring=hashlib.sha1(fieldsstring)
if request.session.get('sesionform')!=hashstring:
if form.is_valid() :
request.session['sesionform'] = hashstring
#do some stuff...
return HttpResponseRedirect('/thanks/') # Redirect after POST
else
raise SubmissionWasDuplicate("duplicate")
else:
form = MyForm()

使用这种方法(不删除 session cookie),用户无法在 session 过期时重新存储数据,顺便说一句,我假设存在识别发送数据的用户的东西

关于python - django 是否存在防止重复表单提交的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2136954/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com