gpt4 book ai didi

jquery - 当后端表单验证失败时,如何在 jQuery 对话框中重新打开 Django 表单?

转载 作者:行者123 更新时间:2023-11-30 23:56:27 25 4
gpt4 key购买 nike

我有一个 Django 表单,在用户单击网页上的链接后,我将其动态加载到 jQuery 对话框。链接中的 href 指向仅包含表单内容的 Django 页面,而不包含整个网站布局。

        $('#add-note').click(function() {            $('#dialog').load($(this).attr('href')).dialog({                title: 'Add a note',                modal: true,                draggable: false,                minWidth: 500,            });            return false;        });

如果用户提交在后端验证的表单,则效果很好。但是,如果表单包含验证错误,Django 会将浏览器转发回表单页面,在这种情况下,该页面实际上并不是用户当前正在查看的页面。

看,用户位于完全不同的页面上,表单只是动态加载到 jQuery 对话框中。那么问题来了,处理这种情况的最佳方法是什么?如何打开带有验证错误的表单返回到对话框而不是表单页面本身?

非常感谢所有帮助!

最佳答案

当使用 AJAX 和 Django 表单时,我通常采用以下方法(虽然没有代码示例,但我认为您会明白的)。

  • 创建一个不同的模板来渲染此表单(无 block ,不从另一个模板扩展)
  • 在渲染模板以显示表单的 View 中,通过 django.template.loader.render_to_string 将此表单直接渲染为 html(使用我提到的模板)。将呈现的表单放入上下文中,将其推送到模板。
  • 在模板中为表单创建一个容器并在其中呈现 html。
  • 当您现在通过 AJAX 提交表单时,请确保提交表单的处理程序也呈现表单(就像通过 django.template.loader.render_to_string 在原始 View 中一样)并至少返回这是 html。如果表单无效,这将包括错误。
  • 获取 AJAX 响应时,只需完全替换容器中的表单即可。之后,您将获得 Django 表单,其中包含原始 Django 表单提交中的所有错误。

这种方法的优点是 Django 仍然负责表单验证和错误显示,并且您不需要通过 Javascript 来处理它(可能有点烦人,特别是对于字段错误)。缺点当然是你必须为它编写更多的后端代码。 :)

关于jquery - 当后端表单验证失败时,如何在 jQuery 对话框中重新打开 Django 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5988611/

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