""" Tutorial: HTTP errors HTTPError is used to return an error response to the client. CherryPy has lots of options regarding how such errors are logged, displayed, and formatted. """ import os localDir = os.path.dirname(__file__) curpath = os.path.normpath(os.path.join(os.getcwd(), localDir)) import cherrypy class HTTPErrorDemo(object): # Set a custom response for 403 errors. _cp_config = {'error_page.403' : os.path.join(curpath, "custom_error.html")} def index(self): # display some links that will result in errors tracebacks = cherrypy.request.show_tracebacks if tracebacks: trace = 'off' else: trace = 'on' return """

Toggle tracebacks %s

Click me; I'm a broken link!

Use a custom an error page from a file.

These errors are explicitly raised by the application:

You can also set the response body when you raise an error.

""" % trace index.exposed = True def toggleTracebacks(self): # simple function to toggle tracebacks on and off tracebacks = cherrypy.request.show_tracebacks cherrypy.config.update({'request.show_tracebacks': not tracebacks}) # redirect back to the index raise cherrypy.HTTPRedirect('/') toggleTracebacks.exposed = True def error(self, code): # raise an error based on the get query raise cherrypy.HTTPError(status = code) error.exposed = True def messageArg(self): message = ("If you construct an HTTPError with a 'message' " "argument, it wil be placed on the error page " "(underneath the status line by default).") raise cherrypy.HTTPError(500, message=message) messageArg.exposed = True cherrypy.tree.mount(HTTPErrorDemo()) if __name__ == '__main__': import os.path thisdir = os.path.dirname(__file__) cherrypy.quickstart(config=os.path.join(thisdir, 'tutorial.conf'))