On Sep 30, 2010, at 9:43 AM, Mike Orr wrote: > CC'ing pylons-devel because these will be FAQs.
>> @action >> def login(self): >> login=(db.load_form('login.kk')) >> self.request.response_content_type = >> 'application/vnd.mozilla.xul+xml' >> return login >> >> @action >> TypeError: __init__() takes exactly 1 argument (2 given) > > The constructor is called with a request argument: > > def __init__(self, request): > self.request = request And @action is a decorator that requires arguments. Using @action is only needed if you need to tweak the default's, ie, to limit the calling to a request_method, or to assign a renderer. If you're doing something like: config.add_handler('home_page', '/', handler=Home, action='index') Then you don't need to use @action if its going to return its own Response object. So the easy way to think of it, the methods in your handler are all actions still (just like in a Pylons 1 controller!), *but*, if you need to modify how the action is called, how the return value of it is handled (ie, using renderer), or how the action is registered (ie, its name), then you use the @action decorator to modify those parameters. >> def login(self): >> login=(db.load_form('login.kk')) >> self.request.response_content_type = >> 'application/vnd.mozilla.xul+xml' >> return login from pylons.controllers.util import Response Then return a response object: def login(self): login = db.load_form('login.hh') response = Response(login) response.content_type = 'application/vnd.mozilla.xul+xml' return response > There is also a render_template_to_response() function somewhere, > maybe in pylons.templating. It fills a template and creates a response > and returns it. Yup. Cheers, Ben -- You received this message because you are subscribed to the Google Groups "pylons-devel" group. To post to this group, send email to pylons-de...@googlegroups.com. To unsubscribe from this group, send email to pylons-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/pylons-devel?hl=en.