【问题标题】:Webpy: how to set http status code to 300Webpy:如何将http状态码设置为300
【发布时间】:2011-06-15 10:11:38
【问题描述】:

也许这是一个愚蠢的问题,但我无法弄清楚如何在 webpy 中获取 http 状态代码。

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

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

谢谢!

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

web.ctx.status = '300 Multiple Choices'

这是最好的解决方案吗?

【问题讨论】:

    标签: python http-headers http-status-codes web.py


    【解决方案1】:

    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)
    

    然后在你的处理程序中输出这个状态码raise MultipleChoices

    class MyHandler:
        def GET(self):
            raise MultipleChoices(['http://example.com/', 'http://www.google.com/'])
    

    当然,它需要针对您的特定 unAPI 应用程序进行调整。

    另见the source for web.HTTPError in webapi.py

    【讨论】:

    • 这个方法也可以处理 304 Not Modified,以防您以编程方式提供某些图像
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2012-08-20
    相关资源
    最近更新 更多