## page was renamed from CherryPy = CherryPy = Pythonic, object-oriented web framework http://www.cherrypy.org/ == Install on Slackware 14 == * wget https://pypi.python.org/packages/source/C/CherryPy/CherryPy-3.2.4.tar.gz * cp CherryPy-3.2.4.tar.gz /tmp * cd /tmp * tar xvzf CherryPy-3.2.4.tar.gz * cd CherryPy-3.2.4 * python setup.py build * python setup.py install == Check installation == {{{ python Python 2.7.3 (default, Jul 3 2012, 21:16:07) [GCC 4.7.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import cherrypy >>> cherrypy.__version__ '3.2.2' >>> quit() }}} == CherryPy test web app == Create folder the web app * mkdir -p /var/www/htdocs/cherrypytest/static Create file '''/var/www/htdocs/cherrypytest/cherrypytest.wsgi''' {{{#!highlight python import sys sys.stdout = sys.stderr import cherrypy cherrypy.config.update({'environment': 'embedded'}) class HelloWorld(object): @cherrypy.expose def index(self): return "Hello World CherryPy!!!!" @cherrypy.expose def add(self,param1,param2): return str( int(param1)+int(param2) ) @cherrypy.expose @cherrypy.tools.json_in() @cherrypy.tools.json_out() def hellojson(self): # curl -X POST -d "{\"name\":\"jkl\"}" http://localhostcherrypytest/hellojson --header "Content-Type:application/json" inj = cherrypy.request.json return {"message": "hello world " + inj['name'] } hello = HelloWorld() #static dir confx={'/static': {'tools.staticdir.on':True , 'tools.staticdir.dir':'/var/www/htdocs/cherrypytest/static' }} application = cherrypy.Application(hello, script_name=None, config=confx) }}} Create static file * echo "Static Test" > /var/www/htdocs/cherrypytest/static/a.txt Create entry in /etc/httpd/vhosts.conf {{{#!highlight xml ServerName localhostcherrypytest DocumentRoot "/var/www/htdocs/cherrypytest" WSGIScriptAlias / /var/www/htdocs/cherrypytest/cherrypytest.wsgi Require local }}} Add entry in /etc/hosts * 127.0.0.1 localhostcherrypytest Restart apache * /etc/rc.d/rc.httpd restart Open the following URLs: * http://localhostcherrypytest/ * http://localhostcherrypytest/add/3/4 * http://localhostcherrypytest/static/a.txt == CherryPy configuration location == In Slack14 is in * /usr/lib/python2.7/site-packages/CherryPy-3.2.2-py2.7.egg/cherrypy/_cpconfig.py Inside the file look for Config.environments . Run python interactively to check the environments {{{ >>> import cherrypy >>> envs= cherrypy._cpconfig.environments #dictionary >>> envs['embedded'] {'checker.on': True, 'engine.SIGTERM': None, 'request.show_mismatched_params': True, 'request.show_tracebacks': True, 'engine.autoreload_on': False, 'tools.log_headers.on': True, 'log.screen': True, 'engine.SIGHUP': None} >>> envs['production'] {'request.show_tracebacks': False, 'log.screen': False, 'request.show_mismatched_params': False, 'checker.on': False, 'engine.autoreload_on': False, 'tools.log_headers.on': False} }}} Open url http://localhostcherrypytest/add/1/2a with environment embedded will show a traceback. To disable the traceback add the follow inside the class HelloWorld {{{#!highlight python class HelloWorld(object): _cp_config = {'request.show_tracebacks': False} @cherrypy.expose def index(self): return "Hello World CherryPy!!!!" @cherrypy.expose def add(self,param1,param2): return str( int(param1)+int(param2) ) }}} == Templating == Check [[Python/Jinja2]] == REST == https://cherrypy.readthedocs.org/en/3.2.6/progguide/REST.html REST quick tips: http://www.restapitutorial.com/lessons/restquicktips.html