2016-04-12 2 views
0

C'est le code que j'ai essayé d'essayer et d'ajouter un jeton csrf à un formulaire javascript.Django - Javascript - Csrf Token

function save() { 
    var form = document.createElement("form"); 
    console.log(form); 
    form.setAttribute('method', 'post'); 
    form.setAttribute('action', '/quiz_score/'); 
    document.body.appendChild(form); 
    var i = document.createElement("input"); 
    i.setAttribute('name', 'Score'); 
    i.setAttribute('value', ""+score); 
    i.setAttribute('name', 'csrfmiddlewaretoken'); 
    i.setAttribute('value', {% csrftoken %}); 
    form.appendChild(i); 
    form.submit(); 
} 

Pouvez-vous voir des problèmes avec cela? Il a une erreur et par conséquent le JS ne fonctionne pas.

Répondre

2

Le modèle {% csrftoken %} tagoutputs la balise form réelle (par exemple <input type='hidden' ... />.

Si vous voulez juste la valeur du jeton, utilisez {{ csrf_token }} à la place.

Si vous soumettez le formulaire avec une demande de paiement ajax, vous .... peut-être plus facile d'envoyer le jeton CSRF comme en-tête, plutôt que d'ajouter la balise à votre formulaire See the docs pour les instructions

2

Vous avez 2 erreurs dans votre code look façon simple à un code Essayez:

var i = document.createElement("input"); 
i.setAttribute('name', 'Score'); 
i.setAttribute('value', ""+score); 
form.appendChild(i); 
var i = document.createElement("input"); 
i.setAttribute('name', 'csrfmiddlewaretoken'); 
i.setAttribute('value', '{{ csrf_token }}'); 
form.appendChild(i); 
+0

Non, cela ne fonctionne pas. –

+0

@PhilipCrocker pouvez-vous partager le code par jsbin.com –