[Twisted-web] [version not trashed by enigmail] Custom 404,
500 pages ...
Cory Dodt
corydodt at twistedmatrix.com
Thu Nov 11 14:33:48 MST 2004
Cory Dodt wrote:
> On the Wiki, I posted (quite some time ago) a working example of putting
> your
> own 404 and 500 pages in place of the plain-jane defaults. The example
> still
> works, and is at:
>
> http://divmod.org/users/wiki.twistd/nevow/moin.cgi/Custom404Page
>
> -=-=-
>
> However, at the same time I wrote that, I discovered that I cannot
> satisfy my
> own use case, which is custom error pages built with xml*, because of
> some bug
> in how Nevow selects the page context to render. I have tried to find a
> patch
> for this myself, but it just isn't happening. Too much about context is
> still
> mysterious to me :-/
>
> Compare the minimal example below to the wiki page above. The wiki works,
> this one does not. When you visit OopsPage, you should see a link to
> take you
> back to the root page. Instead, in that spot you get an error message
> saying
> render_lastLink can't be found.
>
> Thanks for looking :-)
> -=-=-
from nevow import appserver, rend, loaders, tags as T, inevow
from twisted.application import service, internet
class The500Page(rend.Page):
__implements__ = (inevow.ICanHandleException,)
docFactory = loaders.xmlstr("""\
<html xmlns:n="http://nevow.com/ns/nevow/0.1">
<head>
<title>500 error</title>
</head>
<body>
<h1>Ouchie. Server error.</h1>
<p>The server is down.</p>
<p>Ohhh, the server.</p>
<p n:render="lastLink" />
</body>
</html>""")
def renderHTTP_exception(self, ctx, failure):
inevow.IRequest(ctx).setResponseCode(500)
self.renderHTTP(ctx)
def render_lastLink(ctx, data):
referer = inevow.IRequest(ctx).getHeader('referer')
if referer:
return T.p[T.a(href=referer)['This link'],
' will return you to the last page you were on.']
else:
return T.p['You seem to be hopelessly lost.']
the500page = The500Page()
class OopsPage(rend.Page):
def exception(self, ctx, data):
1/0 # cause an exception on purpose
docFactory = loaders.stan(exception)
More information about the Twisted-web
mailing list