You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Form提交成功后重定向返回页面CourseForm为空问题

问题原因

  1. 提交表单后地址栏未跳转:你在addassessment视图中校验表单通过后,直接调用render返回了课程列表模板,没有触发重定向,相当于在addassessment的请求路径下直接渲染了课程页的内容,所以URL不会变化。
  2. CourseForm未加载:你在addassessment视图里构造的上下文没有包含CourseForm的实例,渲染课程模板时找不到form变量,自然不会显示表单字段。

修复方案

修改gradebook/views.py中的addassessment视图即可:

  1. 先确认视图顶部导入了重定向相关方法:
from django.shortcuts import redirect, reverse
  1. 找到表单保存成功后的返回逻辑,把原来的render调用替换为重定向:
def addassessment(request, course_id):
    # 原有其他代码不变
    if request.method == 'POST':
        form = AssessmentForm(request.POST)
        if form.is_valid():
            assess = form.save(commit=False)
            assess.course = this_course
            assess.save()
            form.save_m2m()
            # 删掉原来的return render(...),替换为下面这行
            return redirect(reverse('gradebook:courses'))
    # 原有其他代码不变

补充说明

表单提交成功后使用重定向是Django的最佳实践,既可以避免用户刷新页面导致的重复提交问题,也能保证跳转后的页面走对应视图的完整渲染逻辑,不会出现上下文缺失的问题。

内容的提问来源于stack exchange,提问作者Doug Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 00:24:10