CherryPy

Pythonic, object-oriented web framework

http://www.cherrypy.org/

Install on Slackware 14

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

Create file /var/www/htdocs/cherrypytest/cherrypytest.wsgi

   1 import sys
   2 sys.stdout = sys.stderr
   3 import cherrypy
   4 
   5 cherrypy.config.update({'environment': 'embedded'})
   6 
   7 class HelloWorld(object):
   8     @cherrypy.expose
   9     def index(self):
  10         return "Hello World CherryPy!!!!"
  11 
  12     @cherrypy.expose
  13     def add(self,param1,param2):
  14        return str( int(param1)+int(param2) )
  15 
  16     @cherrypy.expose
  17     @cherrypy.tools.json_in()
  18     @cherrypy.tools.json_out()
  19     def hellojson(self): 
  20         #  curl -X POST -d "{\"name\":\"jkl\"}" http://localhostcherrypytest/hellojson --header "Content-Type:application/json"
  21         inj = cherrypy.request.json
  22         return {"message": "hello world " + inj['name'] }
  23 
  24 hello = HelloWorld()    
  25 #static dir
  26 confx={'/static': {'tools.staticdir.on':True ,
  27                   'tools.staticdir.dir':'/var/www/htdocs/cherrypytest/static'
  28                   }}
  29 
  30 application = cherrypy.Application(hello, script_name=None, config=confx)

Create static file

Create entry in /etc/httpd/vhosts.conf

   1 <VirtualHost *:80>
   2     ServerName localhostcherrypytest
   3     DocumentRoot "/var/www/htdocs/cherrypytest"
   4     WSGIScriptAlias / /var/www/htdocs/cherrypytest/cherrypytest.wsgi
   5     <Directory "/var/www/htdocs/cherrypytest">
   6       Require local
   7     </Directory>
   8 </VirtualHost>

Add entry in /etc/hosts

Restart apache

Open the following URLs:

CherryPy configuration location

In Slack14 is in

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

   1 class HelloWorld(object):
   2     _cp_config = {'request.show_tracebacks': False}
   3     @cherrypy.expose
   4     def index(self):
   5         return "Hello World CherryPy!!!!"
   6     @cherrypy.expose
   7     def add(self,param1,param2):
   8        return str( int(param1)+int(param2) )

Templating

Check Jinja2

REST

https://cherrypy.readthedocs.org/en/3.2.6/progguide/REST.html

Python/CherryPy (last edited 2014-07-23 23:12:21 by 188)