Django使用函数视图处理模态框对象操作后无法跳转回原列表如何解决
解决方案
问题原因
你使用的模态框表单插件默认走AJAX异步提交逻辑,服务端返回的302重定向只会被AJAX请求内部处理,不会作用于当前打开候选人列表的父页面,因此看不到跳转效果。
可选方案
方案1(推荐:体验更流畅)
前端监听表单提交成功事件触发跳转/刷新,无需全页跳转即可看到更新后的评分
- 修改列表页的JS脚本,增加
success回调:
$(function () { $(".validate-student").each(function () { $(this).modalForm({ formURL: $(this).data("form-url"), success: function() { // 二选一即可 // 选项1:直接重载当前列表页,自动加载更新后的评分 window.location.reload(); // 选项2:跳转到指定列表页,和你原有跳转目标保持一致 // window.location.href = "{% url 'list_student' args=[1945] %}"; } }); }); });
- 修改视图代码,异步提交无需返回重定向:
from django.http import HttpResponse def validate_grade(request, pk): context ={} obj = get_object_or_404(Student, id = pk) if request.method == "POST": obj.grade_registration += 1 obj.save() # 返回204状态码表示操作成功无返回内容 return HttpResponse(status=204) return render(request, "students/validate_student.html", context)
方案2(最简修改)
让模态框表单走同步提交逻辑,直接复用原有后端重定向代码,只需修改模态框的form标签,增加target="_top"属性:
<form method="POST" action="" target="_top">
该属性会通知浏览器将表单提交作用于最上层窗口,后端返回的重定向会直接生效。
内容的提问来源于stack exchange,提问作者anthonya
相关产品推荐
相关产品推荐

