【发布时间】:2010-12-18 02:13:29
【问题描述】:
我正在使用cherrypy 开发一个小型Web 应用程序,我想从存储在数据库中的数据生成一些图表。带有表格的网页很简单,我计划将 matplotlib 用于图形本身,但是如何设置该方法的内容类型,以便它们返回图像而不是纯文本? cherrypy 会“嗅探”结果并自动更改内容类型吗?
【问题讨论】:
标签: python dynamic graph cherrypy
我正在使用cherrypy 开发一个小型Web 应用程序,我想从存储在数据库中的数据生成一些图表。带有表格的网页很简单,我计划将 matplotlib 用于图形本身,但是如何设置该方法的内容类型,以便它们返回图像而不是纯文本? cherrypy 会“嗅探”结果并自动更改内容类型吗?
【问题讨论】:
标签: python dynamic graph cherrypy
您需要手动设置响应的内容类型标头,无论是在应用配置中,使用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()
【讨论】:
您可以更改响应的内容类型:
cherrypy.response.headers['Content-Type'] = "image/png"
【讨论】: