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

Django中调用error_display函数后if语句未生效问题求助

问题分析与解决

核心原因是你调用error_display函数时没有返回它的响应结果,代码会继续执行后续的return语句。

问题细节

当你直接写:

if 3<5:
    context={'msg':'OK'}
    return render(self.request, 'error.html', context)
return render(self.request, 'passed.html', {'message':'error2'})

这里的return会终止form_valid方法的执行,直接返回error.html的响应。但你调用self.error_display('OK')时,只是执行了这个函数并得到了响应对象,却没有把这个对象返回,所以代码会继续往下走,执行最后的return render(...),自然就显示error2了。

修正代码

只需要在调用error_display时加上return:

def form_valid(self, form):  # 注意拼写:form_valid 而非 form_valide
    # ... 其他代码
    try:
        3 < 5  # True
    except:
        return self.error_display('error1')  # 这里也要加return,否则异常分支也会继续执行后面代码
    else:
        # ... 其他代码
        if 3 < 5:  # True
            return self.error_display('OK')  # 关键:加上return
        return render(self.request, 'passed.html', {'message':'error2'})  # 注意引号和字典键的引号

顺带修正代码里的其他笔误

  • form_valide 应该是Django内置的form_valid(拼写错误)
  • error_dispaly 是拼写错误,应该是error_display
  • passed.html 和 error.html 需要加引号
  • 字典{message:'error2'} 应该写成{'message':'error2'}(键需要加引号)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 06:14:54