2012-03-30 4 views
0

Ich versuche, das Registrierungsformular für die Verfügbarkeit von E-Mail und Benutzernamen von der serverseitig mit Django programmierten Seite zu validieren. Ich habe dieses überprüft jQuery Validation Plugin remote check for password with Django, aber ich bin 403 verboten - CSRF Überprüfung fehlgeschlagen. Ich versuchte, das csrf-Token in das jquery-Skript einzufügen. Aber immer noch nicht funktioniert. Ich habe den folgenden Code zur Überprüfung der E-Mail-Verfügbarkeit angezeigt.Jquery-Validierung - Überprüfung der Verfügbarkeit von E-Mails und Nutzernamen von Server-Seite Django

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

Könnte jemand mir auf diesem helfen?

Danke!

+0

Wenn Sie django verwenden, brauchen Sie JQuery nicht, um all dies zu tun ... Die Benutzerregistrierung sollte über Formulare erfolgen. Siehe: http://www.b-list.org/weblog/2006/sep/ 02/django-tips-user-registration/ –

+0

@RamandeepSingh Ajax-Funktion ist das Muss. So dass ich jQuery Validierungs Plugin benutze. – rnk

+1

"aber es funktioniert nicht". Was funktioniert nicht? – alan

Antwort

0
$('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 i.e. locally. 
     xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); 
    } 
}); 

Referenz des oben jquery Code in Ihrer Vorlage, um sicherzustellen, dass Ihre AJAX POST-Aufrufe immer das csrf-Token enthalten. Für die Details, überprüfen Sie this article aus dem offiziellen Dokument.

Verwandte Themen