2015-09-25 5 views
1

У меня есть класс с несколькими маршрутами, и я бы хотел, чтобы все они использовали json tools , за исключением одного. Как я могу исключить конкретный маршрут из инструмента (foo в примере ниже)?CherryPy: отключить инструмент для одного обработчика

import cherrypy 

class HelloWorld(object): 
    _cp_config = { 
     'tools.json_out.on': True, 
     'tools.json_in.on': True, 
     '/foo': { 
      'tools.json_out.on': True, 
      'tools.json_in.on': True 
     } 
    } 
    @cherrypy.expose() 
    def index(self): 
     return "Hello World!" 
    @cherrypy.expose() 
    def foo(self): 
     return "Hello World!" 

cherrypy.quickstart(HelloWorld()) 

ответ

3

Вы можете сделать это с cherrypy.config декоратора:

import cherrypy 

class HelloWorld(object): 
    _cp_config = { 
     'tools.json_out.on': True, 
     'tools.json_in.on': True 
    } 

    @cherrypy.expose 
    def index(self): 
     return "Hello World!" 

    @cherrypy.expose 
    @cherrypy.config(**{'tools.json_in.on': False, 'tools.json_out.on': False}) 
    def foo(self): 
     return "Hello World!" 

cherrypy.quickstart(HelloWorld()) 
1

альтернатива, но эквивалентный, подход к @ cyraxjoe Ответим является

import cherrypy 

class HelloWorld(object): 
    _cp_config = { 
     'tools.json_out.on': True, 
     'tools.json_in.on': True 
    } 

    @cherrypy.expose 
    def index(self): 
     return "Hello World!" 

    @cherrypy.expose 
    @cherrypy.config(**{'tools.json_in.on': False, 'tools.json_out.on': False}) 
    def foo(self): 
     return "Hello World!" 
    foo._cp_config = { 
     'tools.json_out.on': False, 
     'tools.json_in.on': False, 
    } 

cherrypy.quickstart(HelloWorld())