首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django防止多次提交

Django防止多次提交
EN

Stack Overflow用户
提问于 2017-03-23 16:53:20
回答 1查看 533关注 0票数 0

我使用的是Django 1.9

我正在尝试创建一个保护用户点击多次提交按钮。

我所做的是为表单创建了一个惟一的令牌;当您提交表单时,装饰者会检查您是否拥有具有相同令牌的session var。在理论上应该在实践中发挥作用。如果我点击10次,将会得到大约5-6个新条目

以下是代码

我的观点:

代码语言:javascript
复制
   @form_token_check
   def new(request, **kwargs):
    if request.method == "POST" and kwargs['form_token']:
        ====write to DB=====

我的装饰师:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2017-03-23 17:02:36

在我看来,在客户端(javascript,jquery等).Because是很好的,在你的方法中,用户仍然可以发送多个提交,因为会话变量是在服务器端设置的,直到客户端得到响应(客户端没有等待响应)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42971186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档