如何使用CherryPy动态生成图形

3

我正在使用cherrypy开发一个小型web应用程序,希望从存储在数据库中的数据生成一些图表。网页上的表格很容易实现,而我计划使用matplotlib来绘制图表本身,但是如何设置方法的内容类型,以便返回图像而不是纯文本? cherrypy会自动“嗅探”结果并自动更改内容类型吗?

2个回答

6

您需要手动设置响应的内容类型头,可以在应用程序配置中使用response.headers 工具或在处理程序方法中进行设置。

在处理程序方法中,MimeDecorator页面上介绍了两个选项。

在方法主体中:

def hello(self):
    cherrypy.response.headers['Content-Type']= 'image/png'
    return generate_image_data()

或者在Cherrypy 3中使用工具装饰器:

@cherrypy.tools.response_headers([('Content-Type', 'image/png')])
def hello(self):
    return generate_image_data()

维基还定义了一个自定义装饰器:

def mimetype(type):
    def decorate(func):
        def wrapper(*args, **kwargs):
            cherrypy.response.headers['Content-Type'] = type
            return func(*args, **kwargs)
        return wrapper
    return decorate

class MyClass:        
    @mimetype("image/png")
    def hello(self):
        return generate_image_data()

0

您可以更改响应的内容类型:

cherrypy.response.headers['Content-Type'] = "image/png"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接