I can't figure out this problem Im having, I just can't understand why it is ignoring the call I put in. First the code (This is a cherrypy website):
import sys, cherrypy, html class Root: @cherrypy.expose def index(self, pageid = "Index"): selection = html.Page() return selection.makeit(dex = pageid) cherrypy.config.update({'server.socket_port': 2572, 'log.screen': False}) cherrypy.quickstart(Root()) If you're not familiar with cherrypy, whats going on here is its pulling a variable from the url and just passing that to my page class that I created. The url would look like http://nonyaz.com/index?pageid=foo and pageid would thus be foo. and here is the class code stored in the html.py file that's causing me all this grief: class Page: #Generic webpage assembler def __init__(self): #Open the header txt file for later use self.headertxt = open("pages/header.html","r") #self.footertxt = open("pages/footer.html","r") def makeit(self,dex=""): pagetitle, htmlbody = self.pager(dex) return self.headerinsert(pagetitle) + htmlbody def pager(self,dex): #Input page filename, Output pagetitle and the HTML output #Find out if the file requested actually exists try: j = dex + ".html" textfile = open("pages/" + j, "r") #If not 404' it except: self.err404(dex) #The first line in the .html files is the title, this reads that one line pagetitle = textfile.readline() #Put the remaining lines of HTML into a var htmlbody = textfile.read() #Return the results return pagetitle,htmlbody def headerinsert(self,pagetitle): #Processes the header.html file for use. Input a page title, outputs #the compleated header with pagetitle inserted headerp1 = "" for i in range(5): headerp1 += self.headertxt.readline() headerp2 = self.headertxt.readline(7) headerp3 = self.headertxt.readline() headerp4 = self.headertxt.read() return headerp1 + headerp2 + str.strip(pagetitle) + headerp3 + headerp4 def err404(self,whatitis="N/A"): #Page not found error page return """<body bgcolor="#666666"> <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> <center>Sorry the page <em>""" + str(whatitis) + """</em> does not exist.<br /> <img src="/files/images/404.png" alt="Page cannot be found."></center> </body>""" This code does work when there is a valid page, aka when the try statement executes with out exception. The the exception is raised for when there is no file, that's where the problems come in, I want it just to call the err404 function and return my 404 page, but it seems to act like its not there and keeps on going, giving me this error: Traceback (most recent call last): File "/home2/awasilenko/lib/python2.4/cherrypy/_cprequest.py", line 342, in respond cherrypy.response.body = self.handler() File "/home2/awasilenko/lib/python2.4/cherrypy/_cpdispatch.py", line 15, in __call__ return self.callable(*self.args, **self.kwargs) File "/home2/awasilenko/webapps/cp/site.py", line 7, in index return selection.makeit(dex = pageid) File "/home2/awasilenko/webapps/cp/html.py", line 10, in makeit pagetitle, htmlbody = self.pager(dex) File "/home2/awasilenko/webapps/cp/html.py", line 25, in pager pagetitle = textfile.readline() UnboundLocalError: local variable 'textfile' referenced before assignment I know the except is being executed because I put a break in there for testing purposes and it did break, but as for why its not pulling up the 404 function and returning the error page, I have no idea. -- http://mail.python.org/mailman/listinfo/python-list