![](/img/trans.png)
[英]Django AJAX requests: create and delete a course. deleting a course not working
[英]Deleting an object with Ajax in Django not working
我有一個Django模板:home.html頁面:
<a href="#" class = "dept" contextmenu = "mymenu2" id = "{{d.dept.id}}" ><i class="fa fa-circle-o"></i> {{d.dept}} <i class="fa fa-angle-left pull-right"></i></a>
<ul class='custom-menu2'>
<p><a id = "add_emp">Add new Employee</a></p> <br>
<p><a class = "del_dept">Delete this Deptartment</a></p>
</ul>
<script>
var id;
$('.dept').mousedown(function(event) {
switch (event.which) {
case 3:
id = $(this).attr('id');
$('.del_dept').on('click',function(e){
if(e.handled !== true)
{
alert(id);
$.ajax({
type: "POST",
url: "del_dept",
data: { 'id':id },
success: function(response){
alert(response.success);
}
});
return false;
e.handled = true;
}
});
break;
}
});
</script>
views.py:
def del_dept(request):
department = Department.objects.get(pk = int(request.REQUEST['id']))
print department
print ("ABCD")
department.delete()
payload = {'success': True}
return HttpResponse(json.dumps(payload), content_type='application/json')
主要urls.py:
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^employee/', include('EmployeeManagement.urls')),
)
和EmployeeManagement.urls文件:
urlpatterns = [
# ex: /polls/
url(r'^$', views.home, name='home'),
url(r'^(?P<emp_id>[-\w]+)/$', views.get_employee, name='get_employee'),
url(r'^(?P<emp_id>[-\w]+)/(?P<status>[-\w]+)/$', views.change_status, name='change_status'),
url(r'save_dept$',views.save_dept, name = 'save_dept'),
url(r'save_emp$',views.save_emp, name = 'save_emp'),
url(r'del_dept$',views.del_dept, name = 'del_dept'),
]
不知道出了什么問題,很顯然,當我單擊“刪除該部門”按鈕時,該特定部門的ID會發出警報,但此后什么也沒有發生。 同樣在del_dept視圖中 ,我嘗試打印部門,只測試了一些文本,但其中沒有一個正在打印。
您的Ajax網址不是有效的網址
$.ajax({
type: "POST",
url: "{% url 'del_dept' %}",
data: { 'id':id },
beforeSend: function(xhr) {
xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
},
success: function(response){
alert(response.success);
}
});
注意我已將del_dept
更改為使用django url模板標記。 您可能需要在此處包含一個名稱空間,但從顯示的內容來看,它看起來並不像
對於發布請求,您還需要包括一個csrf令牌 。
另外,您的視圖在錯誤的位置查找id,發布數據進入request.POST
因此查詢變為以下內容
department = Department.objects.get(pk=int(request.POST['id']))
您可能不需要將id強制轉換為int,因為它可能已經是一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.