【Django 网页Web开发】20. 实战项目:Ajax实战之订单管理与弹出对话框(13)(保姆级图文)
# views.py
from django.shortcuts import render
from django.http import JsonResponse
from .models import Order
def order_list(request):
# 获取订单列表数据
orders = Order.objects.all()
return render(request, 'orders.html', {'orders': orders})
def order_delete(request):
# 删除订单
order_id = request.POST.get('order_id')
Order.objects.filter(id=order_id).delete()
return JsonResponse({'status': 'success', 'order_id': order_id})
# orders.html
<!-- 省略表格代码 -->
<button class="btn btn-danger btn-sm" onclick="deleteOrder({{ order.id }})">删除</button>
<!-- 弹出确认对话框的JavaScript代码 -->
<script type="text/javascript">
function deleteOrder(orderId) {
if (confirm("确定要删除这个订单吗?")) {
var xhr = new XMLHttpRequest();
xhr.open('POST', '/delete-order/', true);
xhr.setRequestHeader('X-CSRFToken', '{{ csrf_token }}');
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var response = JSON.parse(xhr.responseText);
if (response.status === 'success') {
alert('订单已删除。');
window.location.reload(); // 刷新页面以查看更改
} else {
alert('删除订单失败。');
}
}
};
xhr.send('order_id=' + orderId);
}
}
</script>
这个代码实例展示了如何在Django中使用Ajax删除数据库中的订单,并在删除成功后弹出确认对话框。这里使用了XMLHttpRequest
来发送POST请求,并处理服务器的响应。注意,在实际使用时,需要确保已经处理了CSRF tokens以避免跨站请求伪造攻击。
评论已关闭