簡體   English   中英

在Django中使用Ajax刪除對象不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM