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.

Reply via email to