代码之家  ›  专栏  ›  技术社区  ›  florin

如何使用cherrypy动态生成图形

  •  3
  • florin  · 技术社区  · 16 年前

    我正在使用cherrypy开发一个小型web应用程序,我想从数据库中存储的数据生成一些图形。带有表格的网页很简单,我计划对图形本身使用matplotlib,但是如何设置方法的内容类型,使它们返回图像而不是纯文本?cherrypy会自动“嗅探”结果并更改内容类型吗?

    2 回复  |  直到 16 年前
        1
  •  6
  •   ddaa    16 年前

    您需要在app config中使用 response.headers 工具,或在处理程序方法中。

    在handler方法中,有两个选项包含在 MimeDecorator Cherrypy工具维基的页面。

    在方法体中:

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

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

    wiki还定义了一个自定义装饰器:

    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()
    
        2
  •  0
  •   Ned Batchelder    16 年前

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