2012-10-21 2 views
0

J'essaie de publier des données via jQuery AJAX dans une vue Django (1.4). Je l'ai déjà fait, mais quelque chose ne va pas, cette fois-ci. J'ai fait mon AJAX mis en place pour inclure le jeton CSFR comme expliqué dans le Django Docs.Jeton Django csrf non envoyé avec des données ajax

jQuery le long des lignes de:

$.ajax({ 
     url:'/login/', 
     type:'POST', 
     contentType:'application/json; charset=UTF-8;', 
     dataType:'json', 
     data: JSON.stringify({ 
      username:$('#this').val(), 
      password:$('#that').val() 
     }) 

Cependant, quand j'envoie les données, quand j'incorporez la ligne dans la vue:

print request.raw_post_data 

il sera imprimé deux fois. La première fois avec les données publiées en tant que QueryDict {u'this ': u'these', u'that ': u'theose'}, et la deuxième fois avec le jeton csrfmiddleware.

Pourquoi imprimer deux fois? Ne devraient-ils pas être dans le même QueryDic?

+0

Je reçois également cette erreur '" Clé ceci "introuvable dans " ' –

Répondre

0

Parce que je ne l'avais pas compris

e.preventDefault() 

la forme envoyait deux fois. Un QueryDict était valide mais la fonction de vue n'a pas traité b/c les données de soumission par défaut avaient seulement le csrftoken.

occasion

simplejson.loads(request.raw_post_data) 

pour obtenir mes données.