[Twisted-web] Livepage, ClientHandle and context [continued]
Chris Were
chris at feedtagger.com
Mon Jun 27 18:23:50 MDT 2005
>> I expect this can be rectified in livepage.py (line 728 on my co):
>> def locateHandler(self, ctx, path, name):
>> ### XXX TODO: Handle path
>> return getattr(self, 'handle_%s' % (name, ))
>
>
> The path here is meant to be a string which names a Fragment or other
> dispatch path. As you can see, none of this is implemented yet, but
> this is my solution to this problem that you and others on this list
> have had. Basically the API in javascript would look something like this:
>
> server.handleWithPath('onclick', 'some/path', 'someArgument')
>
> locateHandler would change to look more like locateChild, breaking
> apart the path into segments and consuming them until it locates the
> target. I'm not sure how the default locateHandler implementation will
> locate action targets; perhaps with dispatch_* prefixed methods? Here
> is a small example:
>
> class MainPage(Page):
> docFactory = loaders.xmlstring("""<html
> xmlns:n="http://nevow.com/ns/nevow/0.1">
> <a onclick="server.handleWithPath('onclick', 'someFragment',
> 'someArg')">
> Click me
> </a>
> <span n:render="liveid" />
> <span n:render="liveglue" />
> </html>""")
>
> def dispatch_someFragment(self, ctx):
> return MyFragment()
>
>
> class MyFragment(Fragment):
> def handle_onclick(self, ctx, someArg):
> assert someArg == 'someArg'
>
>
> Suggestions on different names other than "dispatch_*" are welcome;
> the main reason I haven't implemented this functionality yet is
> because I can't decide what to call it! :-)
I'd say dispatch is fine (and not just because I'd like to see this
implemented ;-)
Taking from the chatola example:
return context.tag(onsubmit=livepage.handler(onSubmit,
getValue('inputline')))
What would be good is if something similar could be used with dispatch,
perhaps the following (assuming this code is within a fragment):
return context.tag(onsubmit=livepage.handler(onSubmit,
getValue('inputline',self)))
ie: livepage.handler(func,arg,fragment=None)
if this mapped the javascript to
server.handleWithPath('action','fragment','arg') and also mapped (if not
there already) the dispatch_fragment in the MainPage
Would something along those lines be feasible?
> I suggest using a query parameter rather than an additional URL
> segment. xml is a different "view" of the same "object"; in my
> opinion, URLs should represent "objects" (Resources) and query
> parameters should be used to parameterize how the view renders. One
> might also be able to use the "Accept" header that browsers send to
> negotiate the rendered content type. But this is just a suggestion.
> Whatever works for you is fine with me :-)
I tend to agree that xml is a different "view", but I see a benefit in a
REST-like approach to have /xml at the end of an existing Resource...
perhaps the idea that /xml is an extended view to the existing Resource.
Chris.
More information about the Twisted-web
mailing list