CSC/ECE 517 Fall 2014/ch1a 3 zq: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
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/>