Hi Valentino,

thank you for your patience.

Valentino Volonghi aka Dialtone wrote:
I think you are trying to use nevow in the same way you use other frameworks which unfortunately doesn't work at all.

Yeah, I think that's my problem.

Thus I've also tried to do it as you suggest: using a dictionary of Fragm... ehm.... Pages. Anyway, this seems to be how a lot of samples are built.

It also shows, what I would like to have simplified: I don't want to write 'render_content_xy' methods for every level I'm introducing. In fact, I'd like to write a ContainerPage, which reads it's content entirely from a directory, including what templates to show in which order (You will note, that calling www.mysite.com/kontakt/info returns a ContactInfoPage, which renders the BasePage.docFactory (templates/common.html), then includes fragment 1, and finally fragment 2 - this is a hierarchy, IMHO).

Regards

Markus



Here is what I think is more nevow like:


from nevow import rend, loaders, tags as T, inevow, static

class BasePage(rend.Page):
    addSlash = True
    docFactory = loaders.xmlfile('templates/common.html')

    fragments_1 = {
'_default': loaders.xmlfile('templates/default.html', ignoreDocType=True),
        'kontakt': loaders.stan(T.span(render=T.directive('content_2'))),
    }

    def render_title(self, ctx, data):
        ctx.fillSlots('title', 'fmt website')
        return ctx

    def render_content_1(self, ctx, data):
        try:
            fragment_name = inevow.ICurrentSegments(ctx)[0]
            ctx.fillSlots('content', self.fragments_1[fragment_name])
        except KeyError:
            ctx.fillSlots('content', self.fragments_1['_default'])
        return ctx

    def render_content_2(self, ctx, data):
        try:
            fragment_name = inevow.ICurrentSegments(ctx)[1]
            ctx.fillSlots('content', self.fragments_2[fragment_name])
        except KeyError:
            ctx.fillSlots('content', self.fragments_2['_default'])
        return ctx

class ContactInfoPage(BasePage):
    pass

class ContactPage(BasePage):
    child_info = ContactInfoPage

class RootPage(BasePage):
    child_kontakt = ContactPage
    child_layout = static.File('layout')


_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web

Reply via email to