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

root/branches/cherrypy-2.x/cherrypy/tutorial/tut05_derived_objects.py

Revision 762 (checked in by fumanchu, 3 years ago)

Set svn:eol-style to "native" for all .py files. This should fix any line-ending problems for existing files: Windows users will receive CRLF endings when they check out files, and *nix users will receive LF endings. Whenever you "svn add" a new file, make sure its svn:eol-style property is "native"!

  • 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.root = HomePage()
73
74
75 if __name__ == '__main__':
76     cherrypy.config.update(file = 'tutorial.conf')
77     cherrypy.server.start()
78
Note: See TracBrowser for help on using the browser.

Hosted by WebFaction

Log in as guest/cpguest to create tickets