如何通过一次点击避免多重邮寄请求?

时间:2016-12-24 06:32:53

标签: django python-3.x

我有一个简单的表格,可以添加一个家庭的个人信息。有时它只通过一次提交就可以保存一个人的两个实例。也许我的鼠标有问题,双击而不是一次点击(它有一些问题)。我认为这是不可能的,并且django只接受来自表单实例的一个帖子请求而不是更多(可能接受)。如果代码有问题怎么办?如果它是我的代码的问题,为什么它会发生一次?

 house = get_object_or_404(House, id=code)
 if request.method == 'POST':
    form = ParentForm(request.POST)
    if form.is_valid():
        # save it if it's valid
        parent = form.save(commit=False)
        if parent.living == 0:
            parent.in_family = 0
        if not parent.guardian:
            parent.save()
        if parent.guardian and parent.in_family:
            parent.save()

我使用Django 1.8

编辑以清除:这不是唯一一次保存两次的视图。也许这是django中的一个错误

1 个答案:

答案 0 :(得分:0)

要解决此问题,首先需要在相应的数据库表上创建唯一约束。真正的解决方案基于数据库架构。我不知道您在parent表格中有哪些字段(列),您可以从为这两个字段添加唯一约束开始:child_idparent_name

另一个问题是您需要阻止第二次点击。所以基本上你需要编写一些JavaScript代码:它会监听提交按钮的onClick事件。单击按钮后,侦听器会将disabled属性设置为该按钮,以防止进一步点击。