2012-01-31 24 views
0

在Django我有

#template 
$.get("/places/{{ place.id }}/save/",{description : cadena } 

#view 
place.description = request.POST.getlist('description')[0] 

工作正常。 但如果試圖$.post

#template 
$.post("/places/{{ place.id }}/save/",{description : cadena } 

#view 
print request.POST 

沒什麼變化happend

解決

我的問題,我沒有在發送$.postcrsf_token不存在的視圖中添加context_instance=RequestContext(request)

這種變化現在的工作

$.post("/places/{{ place.id }}/save/",{description : cadena, csrfmiddlewaretoken: '{{ csrf_token }}'} 

和必要{{ csrf_token }}{% csrf_token %}
{% csrf_token %}創建<input ...>

+0

感謝您的模板danbreen和極端愛國義 – JuanPablo 2012-01-31 22:10:37

回答

0

你可能運行到一個跨站請求僞造(CSRF)問題 - Django是拒絕POST因爲沒有CSRF令牌。對於Ajax,您需要做一些特殊處理,或將視圖標記爲csrf_exempt。關於這方面更多的信息可以在這裏找到: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax

+0

可以嘗試:$。員額( 「/地點/ {{place.id}} /保存/」,十描述:卡德納,csrfmiddlewaretoken:'{{csrf_token}}'},這適用於Django 1.3,使用csrftoken之前的版本,而不是csrfmiddlewaretoken,我認爲 – Jingo 2012-01-31 20:47:52

+0

@Jingo,試試...? – JuanPablo 2012-01-31 20:49:44

+0

sry,正在編輯... – Jingo 2012-01-31 20:51:13