Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

root/tags/cherrypy-3.0.0/cherrypy/tutorial/tut05_derived_objects.py

Revision 1219 (checked in by fumanchu, 2 years ago)

Changed server.start to server.quickstart, and server.start_all to server.start.

  • Property svn:eol-style set to native
Line 
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
Note: See TracBrowser for help on using the browser.

Hosted by WebFaction

Log in as guest/cpguest to create tickets