Jqueryvalidation – 检查服务器端Django的电子邮件和用户名可用性

我正在尝试validation从Django编程的服务器端的电子邮件和用户名可用性的注册表。 我检查了这个jQuery Validation Plugin远程检查密码与Django,但我得到403禁止 – CSRFvalidation失败。 我尝试在jquery脚本中包含csrf令牌。 但仍然没有工作。 我已经显示了以下代码来检查电子邮件的可用性。

views.py:

def email_check(request): response_str="false" if request.is_ajax(): e = request.POST.get("email_address") try: obj = User.objects.get(email=e) except DoesNotExist: response_str="true" return HttpResponse(response_str) 

urls.py:

 url(r'^signup/email/check/$', 'registration.views.email_check') 

signup.html: https ://gist.github.com/2253002

有人可以帮我吗?

谢谢!

您应该在名为“X-CSRFToken”的cookie中发送csrf令牌,有一种方法可以使用jQuery全局启用此行为:

https://docs.djangoproject.com/en/1.4/ref/contrib/csrf/#ajax

 $('html').ajaxSend(function(event, xhr, settings) { function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie != '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) == (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) { // Only send the token to relative URLs ie locally. xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); } }); 

在模板中引用上面的jquery代码,以确保您的AJAX POST调用始终包含csrf标记。 有关详细信息,请查看官方文档中的这篇文章 。