Ich versuche, eine Formulardaten an eine App mit AJAX zu senden.403 Verboten und request.method zeigt GET in django
Javascript Teil:
function submit_changes() {
var all_data = [A_list, B_list,C_list]
$.ajax({
type: "POST",
url: "/my_url/",
contentType: "application/json",
//dataType: 'json',
//data:JSON.stringify(all_data),
data:{
csrfmiddlewaretoken: "{{ csrf_token }}",
form:JSON.stringify(all_data),
},
success: function() {
alert('Data captured successfully');
//window.location.reload();
},
error: function(){
alert('Error in data capture')
//window.location.reload();
}
});
}
urls.py hat dieses
urlpatterns=[url(r'^my_url/$',views.my_url_fn)]
views.py
def my_url_fn(request):
print "*** request is ***",request
if request.method == 'POST':
print "request is POST"
return Response(json.dumps(submit_changes(request)))
elif request.method == 'GET':
print "request is GET"
return Response(json.dumps(get_already_present_data()),mimetype='application/json')
else:
print "neither post nor get"
Formular Teil von HTML-Code ist:
<div align="center">
<form name="myForm" onSubmit="return 0">{% csrf_token %}
<input type="text" id="blah1" placeholder="Blah1…">
<!-- few more fields -->
</form>
</div>
<div align='center'>
<input id="submit_changes" type="button" align="middle" value="Submit Changes" onclick="submit_changes();" />
</div>
Ich habe das Javascript in HTML geladen. Ich bekomme 403 verboten Fehler und die request.method druckt GET.
Ich habe zwei Dinge zu fragen:
1). Warum erhält request.method GET, wenn es sich um eine POST-Anfrage handelt?
2). Warum bekomme ich immer noch 403 verbotenen Fehler, selbst nachdem ich csrf-Token gegeben habe?
Ich habe viel gesucht und diese versucht: @csrf_exempt
über meine Sicht hinzufügen und es als from django.views.decorators.csrf import csrf_exempt
importieren. Keine Verbesserung. Ich habe auch versucht, django.middleware.csrf.CsrfViewMiddleware
von MIDDLEWARE
Liste in meinem settings.py zu entfernen. Immer noch kein Fortschritt! Ich habe eine andere Frage hier. Bedeutet dies, dass Änderungen in settings.py nicht berücksichtigt werden? Jede Hilfe würde sehr geschätzt werden!
Haben Neustart Sie Ihren Server nach Änderungen am Code? – Jingo
Es wird jedes Mal neu gestartet, wenn es einen Codewechsel erkennt?! – phanny