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

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

概述我有一个Django表单,我在用户单击网页上的链接后动态加载到jQuery对话框.链接中的href指向仅包含表单内容的Django页面,而不是整个站点布局. $('#add-note').click(function() { $('#dialog').load($(this).attr('href')).dialog({ t 我有一个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表单时,我通常采用以下方法(虽然没有代码示例,但我认为你会得到这个想法).

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

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

以上是内存溢出为你收集整理的当后端的表单验证失败时,如何在jQuery对话框中重新打开Django表单?全部内容,希望文章能够帮你解决当后端的表单验证失败时,如何在jQuery对话框中重新打开Django表单?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1083790.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存