Python Webpy:如何将http状态代码设置为300

Python Webpy:如何将http状态代码设置为300,python,http-headers,http-status-codes,web.py,Python,Http Headers,Http Status Codes,Web.py,也许这是一个愚蠢的问题,但我不知道如何在webpy中创建http状态代码 在文档中,我可以看到主要状态代码的类型列表,但是是否有设置状态代码的通用函数 我正在尝试实现一个unAPI服务器,它需要用300个选项回复一个只有标识符的请求。更多信息 谢谢 编辑:我刚刚发现我可以通过web.ctxdo来设置它 web.ctx.status='300多项选择' 这是最好的解决方案吗?web.py对301和其他重定向类型执行此操作的方式是通过子类化web.HTTPError(从而设置web.ctx.stat

也许这是一个愚蠢的问题,但我不知道如何在webpy中创建http状态代码

在文档中,我可以看到主要状态代码的类型列表,但是是否有设置状态代码的通用函数

我正在尝试实现一个
unAPI
服务器,它需要用
300个选项
回复一个只有标识符的请求。更多信息

谢谢

编辑:我刚刚发现我可以通过
web.ctx
do来设置它

web.ctx.status='300多项选择'


这是最好的解决方案吗?

web.py对301和其他重定向类型执行此操作的方式是通过子类化
web.HTTPError
(从而设置
web.ctx.status
)。例如:

class MultipleChoices(web.HTTPError):
    def __init__(self, choices):
        status = '300 Multiple Choices'
        headers = {'Content-Type': 'text/html'}
        data = '<h1>Multiple Choices</h1>\n<ul>\n'
        data += ''.join('<li><a href="{0}">{0}</a></li>\n'.format(c)
                        for c in choices)
        data += '</ul>'
        web.HTTPError.__init__(self, status, headers, data)
当然,它需要针对特定的unAPI应用程序进行调整


另请参见。

如果您以编程方式提供某些图像,此方法也可以用于未修改的304
class MyHandler:
    def GET(self):
        raise MultipleChoices(['http://example.com/', 'http://www.google.com/'])