ich alle Unterlagen auf Django und andere Antworten hier in Stackoverflow versucht, aber das Ergebnis ist immer noch (CSRF-Token fehlt oder falsch ist)Django Ajax-Request führt noch zu CSRF-Token Fehlende oder falsche
Also hier meine Ansicht in Aussicht ist Py:
class MyView(View):
@method_decorator(ensure_csrf_cookie)
def post(self, request, *args, **kwargs):
t = TemplateResponse(request, 'mytemplate.html', data)
t.render()
return JsonResponse({'html' : t.content, 'title' : data['title']})
und dies ist die ajax in meiner JS-Datei, die für ein Click-Ereignis in einer Funktion:
$.ajax({
url: window.location.href,
type: 'POST',
data: data,
beforeSend:
function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
var token = $.cookie('csrftoken');
console.log(token);
xhr.setRequestHeader("X-CSRFToken", token);
}
},
success:
function(result) {
},
});
der erste Anruf ist erfolgreich, aber die succeedin g Anruf führt zu fehlendem Token.
Für das Debugging habe ich console.log verwendet und es wird bei jedem Klick ein anderes Token zurückgegeben.
Können Sie den Code versuchen zu bewegen, die das Token ('var token = $ .cookie ('csrftoken');') wird in die 'beforeSend' Funktion? – solarissmoke
@solarissmoke Ich habe das schon probiert. :(Funktioniert immer noch nicht. – Red
Kannst du bestätigen, dass der 'X-CSRFToken'-Header tatsächlich für nachfolgende Anfragen gesendet wird? Dieser Code befindet sich in einem 'if'-Block und du hast ihn nicht gepostet Code für diese Überprüfungen – solarissmoke