Middleware to display error documents for certain status codes
The middleware in this module can be used to intercept responses with specified status codes and internally forward the request to an appropriate URL where the content can be displayed to the user as an error document.
Middleware that lets you test a response against a custom mapper object to programatically determine whether to internally forward to another URL and if so, which URL to forward to.
If you don’t need the full power of this middleware you might choose to use the simpler forward middleware instead.
The arguments are:
Here is an example where a 404 File Not Found status response would be redirected to the URL /error?code=404&message=File%20Not%20Found. This could be useful for passing the status code and message into another application to display an error document:
from paste.errordocument import StatusBasedForward
from paste.recursive import RecursiveMiddleware
from urllib import urlencode
def error_mapper(code, message, environ, global_conf, kw)
if code in [404, 500]:
params = urlencode({'message':message, 'code':code})
url = '/error?'%(params)
return url
else:
return None
app = RecursiveMiddleware(
StatusBasedForward(app, mapper=error_mapper),
)
Paste Deploy entry point to create a error document wrapper.
Use like:
[filter-app:main]
use = egg:Paste#errordocument
next = real-app
500 = /lib/msg/500.html
404 = /lib/msg/404.html