CSC/ECE 517 Fall 2014/ch1a 3 zq: Difference between revisions
| Line 61: | Line 61: | ||
| === Cookies === | === Cookies === | ||
| <pre> | |||
| import cherrypy | |||
| class WebApp(object): | |||
|     @cherrypy.expose | |||
|     def set(self, value = "Test"): | |||
|         cookie = cherrypy.response.cookie | |||
|         cookie['Value'] = value | |||
|         return "Cookie set" | |||
|     @cherrypy.expose | |||
|     def get(self): | |||
|         cookie = cherrypy.request.cookie | |||
|         return "Cookie value = " + str(cookie['Value'].value) | |||
| cherrypy.quickstart(WebApp()) | |||
| </pre> | |||
| [[File:CherryPyCookieTest.png]] | |||
| === Sessions === | === Sessions === | ||
Revision as of 23:07, 13 September 2014
CherryPy Framework
CherryPy is a python based, object-oriented web framework that enables developers to quickly create lightweight and fast web applications.<ref>http://www.cherrypy.org/</ref><ref>http://en.wikipedia.org/wiki/CherryPy</ref>
Some of the popular websites using it are Hulu<ref>http://tech.hulu.com/blog/2013/03/13/python-and-hulu/</ref> and Netflix<ref>http://techblog.netflix.com/2013/03/python-at-netflix.html</ref>. The full list of applications using it can be found here.<ref>http://docs.cherrypy.org/en/latest/intro.html#websites-running-atop-cherrypy</ref>
Background
Basic Example
The following code demonstrates the most basic webserver using the CherryPy framework.
import cherrypy
class WebApp(object):
    @cherrypy.expose
    def index(self):
        return "Hello, CherryPy!"
   
cherrypy.quickstart(WebApp())
Run the application, and open your web browser to localhost:8080. The following page is displayed
Features
Hosting one or multiple applications
Logging
CherryPy provides the following method for application logging
cherrypy.log("Hello, CherryPy!")
By default, all logging is written to the console. The configuration keys log.access_file and log.error_file are also available for writing logging and errors to a text file.
Query Strings
CherryPy will automatically parse the query string of a URL. Fields are passed as method arguments with matching names, and can take advantage of default argument values.
import cherrypy
class WebApp(object):
    @cherrypy.expose
    def test(self, value=1):
        return "Value = " + str(value)
   
cherrypy.quickstart(WebApp())
A URL of localhost:8080/test?value=5 gives the following
Cookies
import cherrypy
class WebApp(object):
    @cherrypy.expose
    def set(self, value = "Test"):
        cookie = cherrypy.response.cookie
        cookie['Value'] = value
        return "Cookie set"
    
    @cherrypy.expose
    def get(self):
        cookie = cherrypy.request.cookie
        return "Cookie value = " + str(cookie['Value'].value)
   
cherrypy.quickstart(WebApp())
Sessions
Serve Static Content
Ajax Support
Publish REST APIs
Multiple HTTP Servers
Test Suite
References
<references/>


