jQuery Validation Plugin使用Django远程检查密码

我有一个“重置密码”表单,由jQuery Validation插件validation。 一切正常,除了我无法让“远程”部分与Django一起工作。 我正在尝试做的是远程向我的Django后端发送ajax请求,以检查“旧密码”是否正确,作为validation的一部分。

我不确定的是如何设置我的url.py和views.py来返回jQuery.validation需要的内容

登录是必需的,因此会有request.user

我的代码:

$("#changePassword").validate({ rules: { oldPassword: { required: true, remote: { url: "profile/password/check/", type: "post", data: { oldPassword: function() { return $("#oldPassword").val(); } } } }, newPassword: "required", confirmPassword: { equalTo: "#newPassword" } } }); 

非常感谢帮助,谢谢:)

您需要做的就是将URL ^profile/password/check/映射到视图,并在该视图中,获取request.POST字典中的密钥oldPassword的值,按照您的意愿执行,并返回true或者是false 。 例如:

 def check_profile_password(request): response_str = "false" if request.is_ajax(): old_password = request.POST.get("oldPassword") if old_password: # Apply whatever logic you want to apply response_str = "true" return HttpResponse("%s" % response_str) 

好吧,我最终自己搞清楚了,感谢所有提供帮助的人。

从jQuery.Validation方面来看,我想也许我的方法没有通过或正确地添加到Validation模型中,所以Django从未出现任何问题。

我最后只是将“remote:”放入我的输入标签中,如下所示:

  

然后在标签中应用validation:

 $("#changePassword").validate(); 

然后在Django:

 old_password = request.GET.get("oldPassword") request_user = User.objects.get(id=request.user.id) if(request_user.check_password(old_password) == True): response_str = "true" return HttpResponse(response_str) 

嗯,我在我的django项目中做了类似的事情。 因为我不在计算机的后面,我编程并且无法访问我的代码,我只能描述我所做的。

我知道我已经设置了一些url

/ profile / save /,调用saveProfile视图。 你可以设置像^ pwdvalidate / $和调用匹配视图的URL。

在saveProfile视图中,我检查

如果request.is_ajax()和if请求是get。 然后检查request.user的现有密码并执行所需的所有其他检查。 使用simplejson转储返回它:return HttpResponse(simplejson.dumps(some_python_obj))

js请求使用jquery.ajax

我理解它非常模糊和通用,但希望它有所帮助。

编辑:看看这个例子: http : //webcloud.se/article/AJAX_in_Django_with_jQuery/

值得注意的是: 远程validation不适用于旧版本的jQuery。 对我来说,我只能在1.6.1及更高版本中使用它。

如果将远程validation设置为“同步”,默认为“异步”,它也会有所帮助。

 remote: { url:"validate.php", async:false }