2016-04-12 17 views
0

Bir javascript formuna csrf jetonu denemeye ve denemeye çalıştığım kod budur.Django - Javascript - Csrf Jetonu

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(); 
} 

Bununla ilgili herhangi bir sorun görüyor musunuz? Bir hata var ve bu nedenle JS çalışmıyor. Sadece belirteci değerini istiyorsanız

cevap

2

{% csrftoken %} şablon gerçek form etiketi tagoutputs (örn <input type='hidden' ... />.

yerine {{ csrf_token }} kullanın.

bir ajax isteği ile formu gönderiyorsanız, size .... daha kolay yerine formunuzda etiket ekleyerek daha, bir başlık olarak CSRF belirteci göndermek bulabilirsiniz See the docs talimatlar için

2

kodunuzdaki 2 hata var koda Basit yolu göz deneyin:

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

Hayır, bu işe yaramıyor. –

+0

@PhilipCrocker Kodu jsbin.com ile paylaşabilirsiniz –