Package cherrypy :: Package tutorial :: Module tut05_derived_objects
[hide private]
[frames] | no frames]

Source Code for Module cherrypy.tutorial.tut05_derived_objects

 1  """ 
 2  Tutorial - Object inheritance 
 3   
 4  You are free to derive your request handler classes from any base 
 5  class you wish. In most real-world applications, you will probably 
 6  want to create a central base class used for all your pages, which takes 
 7  care of things like printing a common page header and footer. 
 8  """ 
 9   
10  import cherrypy 
11   
12   
13 -class Page:
14 # Store the page title in a class attribute 15 title = 'Untitled Page' 16
17 - def header(self):
18 return ''' 19 <html> 20 <head> 21 <title>%s</title> 22 <head> 23 <body> 24 <h2>%s</h2> 25 ''' % (self.title, self.title)
26
27 - def footer(self):
28 return ''' 29 </body> 30 </html> 31 '''
32 33 # Note that header and footer don't get their exposed attributes 34 # set to True. This isn't necessary since the user isn't supposed 35 # to call header or footer directly; instead, we'll call them from 36 # within the actually exposed handler methods defined in this 37 # class' subclasses. 38 39
40 -class HomePage(Page):
41 # Different title for this page 42 title = 'Tutorial 5' 43
44 - def __init__(self):
45 # create a subpage 46 self.another = AnotherPage()
47
48 - def index(self):
49 # Note that we call the header and footer methods inherited 50 # from the Page class! 51 return self.header() + ''' 52 <p> 53 Isn't this exciting? There's 54 <a href="./another/">another page</a>, too! 55 </p> 56 ''' + self.footer()
57 index.exposed = True
58 59
60 -class AnotherPage(Page):
61 title = 'Another Page' 62
63 - def index(self):
64 return self.header() + ''' 65 <p> 66 And this is the amazing second page! 67 </p> 68 ''' + self.footer()
69 index.exposed = True
70 71 72 cherrypy.tree.mount(HomePage()) 73 74 75 if __name__ == '__main__': 76 import os.path 77 cherrypy.config.update(os.path.join(os.path.dirname(__file__), 'tutorial.conf')) 78 cherrypy.server.quickstart() 79 cherrypy.engine.start() 80