Как создать графику на лету с cherrypy - PullRequest
3 голосов
/ 19 ноября 2009

Я занимаюсь разработкой небольшого веб-приложения с использованием cherrypy и хотел бы создать несколько графиков на основе данных, хранящихся в базе данных. Веб-страницы с таблицами просты, и я планирую использовать matplotlib для самих графиков, но как мне установить тип содержимого для метода, чтобы они возвращали изображения вместо простого текста? Будет ли вишневый "нюхать" результат и автоматически менять тип контента?

Ответы [ 2 ]

6 голосов
/ 19 ноября 2009

Вам необходимо установить заголовок типа содержимого ответа вручную, либо в конфигурации приложения, используя инструмент response.headers, либо в методе обработчика.

В методе обработчика есть две опции, описанные на странице MimeDecorator вики Cherrypy Tools.

В теле метода:

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 голосов
/ 19 ноября 2009

Вы можете изменить тип содержимого ответа:

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