我試圖使用AJAX將表單數據發送到應用程序。403 Forbidden和request.method在django中顯示GET
JavaScript部分:
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有這個
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"
組成部分,從HTML代碼:
<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>
我已經在html中加載了javascript。 我得到403禁止的錯誤和request.method打印GET。
我有兩件事情要問:
1)。爲什麼request.method是POST請求時獲取? 2)。爲什麼即使在給出csrf標記後,我仍然得到403禁止錯誤?
我尋覓了很多,嘗試這些:上面我的觀點添加@csrf_exempt
和進口它作爲from django.views.decorators.csrf import csrf_exempt
。沒提升。我也嘗試從我的settings.py中的MIDDLEWARE
列表中刪除django.middleware.csrf.CsrfViewMiddleware
。仍然沒有進展!我在這裏有另一個問題。這是否意味着settings.py中的更改沒有得到反映?任何幫助將不勝感激 !
後請將代碼更改重新啓動您的服務器? – Jingo
只要它檢測到代碼更改,它會自行重新啓動?! – phanny