You need to enable JavaScript to run this app. Django CreateView提交表单后无法重定向返回None报错求助
优惠活动
大模型
产品
解决方案
定价
更多

Django CreateView提交表单后无法重定向返回None报错求助

问题根源

你的报错由两个可修复的问题导致:

  1. 重写form_valid方法时未返回父类方法的执行结果,Django要求类视图的form_valid必须返回HttpResponse对象,你仅调用了super().form_valid(form)但没有返回,所以方法最终返回None触发报错。
  2. success_url写死相对路径不够稳妥,推荐使用Django内置的反向解析工具按路由name生成跳转地址,避免后续修改路由路径时需要同步改动视图代码。

修复后的PlansCreateView代码

from django.urls import reverse_lazy

class PlansCreateView(LoginRequiredMixin, CreateView):
    model = Plan
    fields = ["title", "description", "date_deadline"]
    template_name = "work/plans_forms.html"
    # 用reverse_lazy反向解析路由name生成正确的跳转地址
    success_url = reverse_lazy('work-plans')

    def form_valid(self, form):
        form.instance.supervisor = self.request.user
        # 必须返回父类form_valid方法的执行结果
        return super().form_valid(form)

验证说明

修改后提交表单,Django会自动跳转到name为work-plans的计划列表页,之前Plan实例能成功创建是因为form_valid中保存实例的逻辑已经执行,只是最后重定向的响应没有被正确返回导致报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 12:06:04