【问题标题】:How to generate a graphic on the fly with cherrypy如何使用cherrypy即时生成图形
【发布时间】:2010-12-18 02:13:29
【问题描述】:

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

【问题讨论】:

    标签: python dynamic graph cherrypy


    【解决方案1】:

    您需要手动设置响应的内容类型标头,无论是在应用配置中,使用response.headers 工具,还是在处理程序方法中。

    在处理程序方法中,Cherrypy 工具 wiki 的 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()
    

    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】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-27
        相关资源
        最近更新 更多