Source code for cherrypy.scaffold

"""<MyProject>, a CherryPy application.

Use this as a base for creating new CherryPy applications. When you want
to make a new app, copy and paste this folder to some other location
(maybe site-packages) and rename it to the name of your project,
then tweak as desired.

Even before any tweaking, this should serve a few demonstration pages.
Change to this directory and run:

    cherryd -c site.conf
"""

import cherrypy
from cherrypy import tools, url

import os
local_dir = os.path.join(os.getcwd(), os.path.dirname(__file__))


[docs]@cherrypy.config(**{'tools.log_tracebacks.on': True}) class Root: """Declaration of the CherryPy app URI structure."""
[docs] @cherrypy.expose def index(self): """Render HTML-template at the root path of the web-app.""" return """<html> <body>Try some <a href='%s?a=7'>other</a> path, or a <a href='%s?n=14'>default</a> path.<br /> Or, just look at the pretty picture:<br /> <img src='%s' /> </body></html>""" % (url('other'), url('else'), url('files/made_with_cherrypy_small.png'))
[docs] @cherrypy.expose def default(self, *args, **kwargs): """Render catch-all args and kwargs.""" return 'args: %s kwargs: %s' % (args, kwargs)
[docs] @cherrypy.expose def other(self, a=2, b='bananas', c=None): """Render number of fruits based on third argument.""" cherrypy.response.headers['Content-Type'] = 'text/plain' if c is None: return 'Have %d %s.' % (int(a), b) else: return 'Have %d %s, %s.' % (int(a), b, c)
files = tools.staticdir.handler( section='/files', dir=os.path.join(local_dir, 'static'), # Ignore .php files, etc. match=r'\.(css|gif|html?|ico|jpe?g|js|png|swf|xml)$', )
root = Root() # Uncomment the following to use your own favicon instead of CP's default. # favicon_path = os.path.join(local_dir, "favicon.ico") # root.favicon_ico = tools.staticfile.handler(filename=favicon_path)