删除django中的Model对象使用jquery Ajax

时间:2016-11-29 08:57:36

标签: javascript jquery ajax django python-2.7

使用jquery / ajax很难删除对象。我已经实现了一个表,其中包含来自Appointment模型的对象列表。每行都有一个删除按钮。

对象模板'表是:

<table class="table table-striped table-bordered table-list">
    <thead>
     <tr>
        <th><em class="fa fa-cog"></em></th>
        <th class="hidden-xs">ID</th>
        <th>Patient Name</th>
        <th>Day</th>
        <th>Time</th>
        <th>Location</th>
     </tr>
    </thead>
    <tbody>
        {% for appointment in appointments %}
            <tr>
                <td align="center">
                    <button class="delete_button" id="{{ appointment.id }}">
                        <em class="fa fa-trash"></em>
                    </button>
                </td>
                  <td>1</td>
                <td class="hidden" id="appointment_id">{{ appointment.id }}</td>
                <td>{{ appointment.patient }}</td>
                <td>{{ appointment.day }}</td>
                <td>{{ appointment.time }}</td>
                <td>{% if appointment.clinic %}
                      {{ appointment.clinic }}
                      {% endif %}
                      {% if appointment.hospital %}
                      {{ appointment.hospital }}
                      {% endif %}
                </td>
            </tr>
        {% endfor %}
    </tbody>
</table>

Javascript如下:

$(document).ready(function(){
    $(".delete_button").click(function() {
        var id = $(this).attr('id');
        $.ajax({
            url: "{% url 'deleteappointment' %}",
            data: { 'id' : id },
            beforeSend: function(xhr) {
                xhr.setRequestHeader("X-CSRFToken", {% csrf_token %} );
            },
            success: function(response){
            }
        });
    });
});

单击删除按钮时没有发生任何事情。我在这里做错了什么?

编辑2  这是在ajax请求中进行的: 控制台中的语法错误:

beforeSend: function(xhr) {
      xhr.setRequestHeader("X-CSRFToken", <input type='hidden' name='csrfmiddlewaretoken' value='LUgmNbcWfkIR9KpLi7lzsn0QOk' /> );
                },

如何阻止csrftoken标记在此处呈现整个输入字段?

1 个答案:

答案 0 :(得分:5)

您正在使用{% csrf_token %}模板标记,该标记以html格式为表单插入标记。您可以使用其他类型的括号(内部引号)

xhr.setRequestHeader("X-CSRFToken", {% csrf_token %} );

应该是

xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");