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

如何在web2py模块中使用HTTP()类并抛出HTTP异常?

在web2py模块中抛出HTTP异常的正确方法

这个问题的核心在于对web2py的current对象和HTTP类的定位理解偏差——current是线程本地存储的请求上下文对象,主要存放和当前请求绑定的实例(比如T、request、response),但HTTP本身是一个独立的异常类,并不属于current上下文的一部分,所以直接通过current.HTTP调用自然会报错。

解决方法很简单,直接从gluon模块导入HTTP类即可,不需要借助current:

步骤1:导入HTTP类

在你的模块开头添加导入语句:

from gluon import HTTP

步骤2:在函数中抛出HTTP异常

接下来就可以在函数里正常使用raise HTTP(...)了,比如:

def validate_input(data):
    if not data.get("required_field"):
        # 抛出400错误,附带错误消息
        raise HTTP(400, "Error: Required field is missing")

结合国际化(T函数)的场景

如果你的错误消息需要用current.T做国际化,只需要同时导入current和HTTP,两者可以配合使用:

from gluon import current, HTTP

def validate_input(data):
    if not data.get("required_field"):
        raise HTTP(400, current.T("Required field is missing"))

总结一下:HTTP是一个可以直接导入使用的异常类,不需要通过current对象访问——只有那些和当前请求上下文绑定的实例才需要借助current来获取,而独立的工具类/异常类直接导入即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:22:37