![](https://secure.gravatar.com/avatar/37ed63938a579fb1bd8f96c740ba5d72.jpg?s=120&d=mm&r=g)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:nevow="http://nevow.com/ns/nevow/0.1"> ^^^^^
<form n:render="loginForm" method="post"> ^
"n" != "nevow" Thanks, that was the problem.
Please bear with me for a little while more. I have two more questions: 1) I don't understand what the third parameters(noLogout and resc.logout) in these return statements do: def requestAvatar(self, avatarId, mind, *interfaces): ... return (inevow.IResource, resc, noLogout) ... return (inevow.IResource, resc, resc.logout) Can you give me a hint? 2) Now I'm trying to move the LoggedIn class into an external "welcome.html" file. I get this error (files follow my signature): exceptions.AttributeError: 'NoneType' object has no attribute 'load' I get this error even without using any nevow tags in welcome.html. Thank you for your time, -- Pedro This is my new LoggedIn class: class LoggedIn(rend.Page): """The resource that is returned when you login""" addSlash = True docfactory = loaders.xmlfile("welcome.html") def render_welcome(self, ctx, data): return ctx.tag[ "Hello, %s!" % data] def render_logout(self, context, data): return ctx.tag(href=url.root.child(guard.LOGOUT_AVATAR)) def logout(self): print "%s logged out!" % self.original And this is welcome.html: <html> <head> <title>Welcome!</title> </head> <body> <h1>nevow:render="welcome"</h1> <a nevow:render=logout">Logout</a> </body> </html>