我使用的是Django 1.9
我正在尝试创建一个保护用户点击多次提交按钮。
我所做的是为表单创建了一个惟一的令牌;当您提交表单时,装饰者会检查您是否拥有具有相同令牌的session var。在理论上应该在实践中发挥作用。如果我点击10次,将会得到大约5-6个新条目
以下是代码
我的观点:
@form_token_check
def new(request, **kwargs):
if request.method == "POST" and kwargs['form_token']:
====write to DB=====我的装饰师:
def form_token_check(func):
def inner(request, *args, **kwargs):
kwargs['form_token'] = False
if request.method == "POST":
new_form_token = request.POST.get('form-token', '')
if 'form-token' in request.session:
old_form_token = request.session['form-token']
if new_form_token != old_form_token:
kwargs['form_token'] = True
request.session['form-token'] = new_form_token
else:
kwargs['form_token'] = True
request.session['mlvr-form-token'] = new_form_token
return func(request, *args, **kwargs)
return inner发布于 2017-03-23 17:02:36
在我看来,在客户端(javascript,jquery等).Because是很好的,在你的方法中,用户仍然可以发送多个提交,因为会话变量是在服务器端设置的,直到客户端得到响应(客户端没有等待响应)。
https://stackoverflow.com/questions/42971186
复制相似问题