Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Django和jQuery的订阅表单_Jquery_Python_Html_Django_Forms - Fatal编程技术网

使用Django和jQuery的订阅表单

使用Django和jQuery的订阅表单,jquery,python,html,django,forms,Jquery,Python,Html,Django,Forms,我一直在做一个可以订阅站点的页面,我一直在尝试在Django模板中使用jQuery启动表单。 现在,如果用户想要订阅,注册页面将正确打开,如果一切正常,注册将顺利进行,并返回主页,在那里可以登录;如果出现错误(错误的用户名、电子邮件或密码),它将返回主页而不指出任何错误-只有当您再次单击以打开注册表时,才会显示错误 我将复制粘贴我的代码 homepage.html {%if user.u经过身份验证%} 欢迎回来,{{user.username}。让我们一起探索世界! {%else%} 现

我一直在做一个可以订阅站点的页面,我一直在尝试在Django模板中使用jQuery启动表单。 现在,如果用户想要订阅,注册页面将正确打开,如果一切正常,注册将顺利进行,并返回主页,在那里可以登录;如果出现错误(错误的用户名、电子邮件或密码),它将返回主页而不指出任何错误-只有当您再次单击以打开注册表时,才会显示错误

我将复制粘贴我的代码

  • homepage.html
{%if user.u经过身份验证%}
欢迎回来,{{user.username}。让我们一起探索世界!
{%else%}
现在订阅:)
&时代;
在花园里登记
{%如果已注册%}
帐篷花园说:谢谢您的注册

{%else%} 帐篷花园说:在这里注册
{%csrf_令牌%} {{user_form.as_p} {{profile_form.as_p} {%endif%} 接近 $(文档).ready(函数(){ $(“#myBtn”)。单击(函数(){ $(“#myModal”).modal(); }); }); 你已经是会员了吗?那么!!
{%endif%}
由于表单仅在用户单击按钮时显示,因此不会显示表单错误

<script>
    $(document).ready(function(){
        $("#myBtn").click(function(){
            // You need to be triggering this when there was an error
            $("#myModal").modal();
        });
    });
</script>
以及:


$(文档).ready(函数(){
$(“#myBtn”)。单击(函数(){
$(“#myModal”).modal();
});
//如果模板呈现时注册失败==true
//然后单击控制模式的按钮。
如果({注册失败}}){
$(“#myBtn”)。单击();
}
});

请注意,这不是解决问题的最佳长期解决方案,我认为您需要经常重构代码。但这将解决眼前的问题。

您希望在这一部分采取不同的行为?如果表单上有错误,是否希望模式自动弹出?最好的方法是什么?我的意思是,我不是要求你为我做所有的事情,但是如果你能让我做一些特殊的练习,我会很感激:)我会使用javascript客户端验证方法,这样你就不必让用户发布整个表单并重新加载页面,仅仅说键入的内容不正确。谷歌搜索
javascript表单验证
,看看你能找到什么。谢谢,我来看看!仅在客户端控制验证是否是一种好的做法?不,您肯定应该同时进行这两方面的工作。最低要求,仅限服务器端。在您的特定情况下,用户可以方便地在客户端进行验证。
# in views.py
else:
    print user_form.errors, profile_form.errors
    return render_to_response(
        'tentagarden/home.html',
        {'user_form': user_form, 'profile_form': profile_form, 'registered': registered, 'registration_failed': True},
        context)
<!-- in your HTML -->
<script>
    $(document).ready(function(){
        $("#myBtn").click(function(){
            $("#myModal").modal();
        });
        // If the template is rendered with registration_failed == true
        // Then send a click to the button controlling the modal.
        if ({{registration_failed}}) {
            $("#myBtn").click();
        }
    });
</script>