On Sat, Jul 25, 2009 at 1:05 PM, Colin Alston <karnaugh@karnaugh.za.net> wrote:


2009/7/25 Siegmund Führinger <lists@0xx0.net>

On Sat, Jul 25, 2009 at 10:06 AM, Colin Alston<karnaugh@karnaugh.za.net> wrote:
> On Sat, Jul 25, 2009 at 9:04 AM, Michał Pasternak <michal.dtz@gmail.com>
> wrote:
>>
>> BTW, are there any URL dispatchers (like the one Django has) out there for
>> Nevow?
>
> I really and truly hope not.

why not? urls are very important and using child_XXX methods is
sometimes not very convinient.

Convenience at the cost of maintainability is not worth it.

 FWIW, you can subclass your page objects to create more generic ways to deal with REST like arguments, as well as child page dispatch.

This is what I do in Enamel:

http://open.thusa.co.za/enamel/browser/trunk/enamel/pages.py#L68
http://open.thusa.co.za/enamel/browser/trunk/enamel/pages.py#L47

Then you can mix the page object appropriately and do something like

class FooPage(rend.Page):
    # Whatever...

class MyPage(pages.Standard):
    childPages = {
        'Foo' : FooPage
    }

    arbitraryArguments = True

    def render_foo(self, c, d):
        return c.tag[
            "You passed ", self.arguments[0], "instead of 'Foo'"
        ]

HTH