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

Django重写UpdateView的form_valid方法时报视图未返回HttpResponse错误

问题原因
  • 你在重写UpdateView的form_valid方法时,没有按照Django类视图的规范返回HttpResponse对象。父类原生的form_valid方法默认会返回重定向响应,你覆盖方法后移除了原有返回逻辑,导致方法执行完返回None,触发报错。
解决方案

你只需要在form_valid方法的末尾补充返回逻辑即可,有两种常用实现方式:

方式1:调用父类原生方法(推荐)

你已经自行完成了self.object = form.save()的保存逻辑,直接调用父类方法返回默认的重定向响应即可,修改后的form_valid代码如下:

def form_valid(self, form):
    self.object = form.save()
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect(ADDR)

    def send(msg):
        message = msg.encode(FORMAT)
        msg_length = len(message)
        send_length = str(msg_length).encode(FORMAT)
        send_length += b' ' * (HEADER - len(send_length))
        client.send(send_length)
        client.send(message)

    send("Hello World!")
    send("Hello Andrew")
    send("Hello")
    send(DISCONNECT_MESSAGE)
    # 新增以下这行即可
    return super().form_valid(form)

方式2:手动返回重定向

如果你需要自定义跳转地址,也可以手动返回重定向响应:

from django.shortcuts import redirect

# 在form_valid末尾加
return redirect('你要跳转的路由名')
额外注意事项
  • 你当前的socket通信逻辑是同步阻塞的,如果目标端口服务未启动、连接超时或者网络异常,会直接导致请求卡住甚至报错,建议给socket操作加try-except异常捕获
  • 若socket通信耗时较长,建议放到异步任务队列中执行,不要阻塞正常的请求响应流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:54:03