【问题标题】:Popup window django after form submission表单提交后弹出窗口django
【发布时间】:2015-07-10 16:12:21
【问题描述】:

如何在有人提交表单后出现弹出框?例如,提交表单后,我希望出现一个弹出框,显示“已成功提交”。我现在的看法是它只是重定向到一个说“成功提交”的页面。而不是这个,我希望在后台显示一个带有表单的弹出窗口。

def addDog(request):
  if request.method == "POST":
    form = DogForm(request.POST)
    if form.is_valid():
      post = form.save(commit=False)
      post.save()
      return HttpResponse("Successfully submitted")
    else:
      print("Unable to save. Form is not valid")
      print(form.errors)
  else:
    form = DogForm()
  return render(request, "app/addDog.html", {"form":form})

【问题讨论】:

    标签: javascript python django


    【解决方案1】:

    您需要在 JavaScript 中实现它。在较高级别上,向与您相同的端点发出 AJAX POST 请求。成功后,使用window.alert("Successfully submitted!")

    如果这是你网站上 JS 的程度,那么 jQuery 就有点矫枉过正了,但是用 jQuery 举个例子是最简单的:

    $("#submit-button").on("click", function() {
        $.post("http://some/endpoint/here", $("#my-form").serialize())
            .done(function() { window.alert("Successfully submitted!"); })
            .fail(function() { window.alert("Submission failed!"); });
    });
    

    这里用到的函数有:$.post$().on$().serialize

    这可以在 vanilla JavaScript 中毫无问题地实现,但它更冗长,所以我不打算在这个例子中这样做。

    【讨论】:

    • 当字段输入错误时,这似乎不会显示错误消息。当我提交表单时,它应该告诉我我缺少一个字段,但它仍然提交它(即使它不被数据库接受)。
    • 你要么必须在 JS 中进行验证,要么在 Django 中进行验证,然后在 JS 中解析响应。如果您这样做,您将不会免费获得 Django 错误消息。这将需要额外的工作(而且可能很多)。我建议查看django-ajax。也许这会让事情变得更容易
    【解决方案2】:

    模板中的表单提交事件需要添加Javascript

    <form method="post" id="DogForm">
        {% csrf_token %}
        <table>
          {{ form.as_table }}     
    
        </table>
        <button type="submit">Save</button>
    
      </form>
    <script>
    $("#DogForm").on('submit', function(event) {
          alert("New Dog Added");
    </script>
    

    【讨论】:

    • 需要关闭功能
    猜你喜欢
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多