2009-11-18 19 views
3

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

回答

6

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

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

维基还限定的定制的装饰:

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"