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_displaypassed.html和error.html需要加引号- 字典
{message:'error2'}应该写成{'message':'error2'}(键需要加引号)
内容的提问来源于stack exchange,提问作者Genzo Ito
相关产品推荐
相关产品推荐

