[Twisted-web] Re: Nevow status

Donovan Preston dp at ulaluma.com
Mon Sep 27 14:17:24 MDT 2004


On Sep 27, 2004, at 1:57 PM, Marc-Antoine Parent wrote:

> I wrote some for the hell of it. Page patterns and children factories 
> are dead easy; working my way through the forms logic right now. My 
> only comment so far: I wish adding events did not require writing an 
> interface. (Or does it? Don't answer if you're busy, I'll figure it 
> out ;)
>
> I expected something like
> class myPage(rend.Page):
>     def action_someAction(self, ctx, *kwargs):
> 	....
>
> so that I could call, in a simple href or form:
> myPage?action=someAction&arg1=1&arg2=b
> I know formless and/or liveEvil are better ways to do some of this, 
> but I like calling a RESTful interface from Javascript to transmit 
> data to the server.
> I may just code it atop what is there, it looks easy enough ;-)
> If there are deep reasons _not_ to do it, I'd like to know.

I'm ccing this to the list to solicit more general feedback.

I agree it should be easier and it's something I have been thinking 
about for a little while now. The main reason formless requires 
interfaces is because of the type annotation, coercion and error 
handling features of formless. If you are just submitting strings and 
don't care if they are valid or not it would be easy enough to do what 
you want to do:

class ActionPage(rend.Page):
	def renderHTTP(self, ctx):
		action = ctx.arg('action')
		if action:
			args = IRequest(ctx).args.copy()
			del args['action']
			return getattr(self, 'action_%s' % action)(ctx, **args)
		return rend.Page.renderHTTP(self, ctx)

I might go ahead and add this to rend so people can use it if they 
want. The thing I like about this approach is that it is simple enough 
to get started quickly, since formless is a lot to swallow when you are 
learning the framework.

I still think the formless interface approach is valid and useful 
however, because of all the things you get from it:

* Form rendering
* Error checking
* Error form rendering
* Type coercion
* Method calling and property setting

Really, formless is designed as the ultimate REST architecture, where 
form POSTs only mutate server side objects and are immediately 
redirected to a GET for that same object. But it is overkill for 
simpler tasks. Maybe there should be some sort of middle ground.

dp




More information about the Twisted-web mailing list