web.redirect()在web.py中不起作用

我正在使用web.py框架进行项目。如果数据库查询返回的结果为空(或返回的行数为零),我有一个小代码可将用户重定向到其他屏幕。


voma_user_details = get_user_by_email(['id','is_active'],None,email)

if len(list(voma_user_details)) == 0:

    #return redirect_url+'?error=User not found in database'

    web.redirect(redirect_url+'?error=User not found in database')      

voma_id = int(voma_user_details[0]['id'])

在这里,当查询返回零条记录时,页面应被重定向到redirect_url,但是重定向不起作用,并且在下一行引发异常,即列表索引超出范围(因为列表长度为零)。我通过在if块中打印重定向URL进行检查,它进入了该块,但没有重定向页面。


任何指针将不胜感激。


墨色风雨
浏览 146回答 2
2回答

蛊毒传说

web.redirect返回一个Redirect对象,该对象是的实例Exception。您应该举起它(或者也可以将其返回),以使重定向发生。否则,该方法的其余部分仍将执行,这可能会导致不相关的异常(在这种情况下为IndexError,因为您正试图获取空列表的元素)。如果仅调用,web.redirect则返回的字符串将作为响应内容发送,但响应头仍将包含重定向(使用状态301)。但是浏览器通常会立即遵循301重定向。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python