[Twisted-web] How to nest LiveElements? (getting a
MissingRenderMethod error)
kgi
iacovou at gmail.com
Fri Dec 1 12:08:39 CST 2006
On Friday 01 December 2006 17:52, Jean-Paul Calderone wrote:
> The difference between Fragment and Element is just this: Fragment
> renderers are passed a context, Element renderers are not.
> [...]
> The difference in the way render methods are dispatched between Fragment
> and Element is somewhat incidental to this. At some future time, it may be
> possible to customize Element so that it also dispatches to render_, since
> this isn't really an essential part of the change Element actually exists
> to facilitate.
OK, so it's not some Deep Architectural Reason; it's just that "Elements are
not Fragments", and they use a slightly different syntax. Thanks for the
clarification.
I do have one more question on this subject of LiveElements, if you don't mind
imparting some more wisdom.
When I'm completely stumped by something, I try and grep through the various
Divmod sources to try and find an idiomatic usage (or even one that
says, "TODO: We really should fix this one day" :-) ).
One surprising result was that most of the LiveElement-derived classes don't
generally have a docFactory defined, but rather implement INavigableFragment
and implement non-GUI 'business logic' (e.g. looking up and storing things in
a DB), although they do return renderable elements from their renderer
methods.
An example of this would be the FromAddressConfigFragment class in
Quotient/xquotient/compose.py
What is the reason behind this approach? My approach has generally been to
build a bunch of GUI-neutral 'business logic' objects and access these from
the GUI layer (thereby theoretically allowing the GUI to be changed, blah,
blah, not that I've ever heard of a successful GUI change, mind.).
I guess one advantage of the approach in the Divmod sources is that you
minimise "interface duplication": you don't have client-side JS calling
server-side LiveElement.doStuff(), which has to call
BusinessObject.doStuff().
Are there other motives and reasons I've completely failed to think of?
Regards,
Ricky
More information about the Twisted-web
mailing list