[python] mod_python Templating System

mtip mtip na atlas.cz
Čtvrtek Leden 4 09:39:08 CET 2007


s> mtip napsal(a):
>> Zdravim,
>> mam mod_python na Apache s nastavenim jako Templating System
>> (PythonHandler mod_python.publisher)
>> v dokumentaci je popsano pouze jak odeslat na vystup zkompilovanou
>> sablonu :
>> tmpl = psp.PSP(req, filename='hello.tmpl')
>> tmpl.run(vars = { 'greet': s })
>> Ale ja bych potreboval tuhle sablonu jen zkompilovat a ulozit do
>> promenne k dalsimu pouziti jako podokno stranky. Nevite nekdo jak na
>> to ? Diky.
>> 

s> Zdravim,

s> ja pouzivam tento zpusob:
s> -------------------------

s> title = "muj web"

s> menu_psp = psp.PSP(req, "menu_tmpl.html", vars = {})

s> content_psp = psp.PSP(req, "content_tmpl.html",
s> 			vars = {'obsah': "nejaky obsah"})

s> web = psp.PSP(req, "web_tmpl.html", vars={'menu_tmpl':menu_psp,
s> 			'content':content_psp,
s>                         'title':title})



s> p.s. take teprve pronikam do taju tohoto modu ;)

---------------------------------------------------------------------------

Diky za odpoved, ale tohle se mi nejak nedari rozchodit, s tim, ze mi to chybuje,
ze predavana promenna do sablony by mela byt uz typu string.

Nicmene uz sem to vyresil docasnym prekrytim metody write v req - takto:
def getHtml(self):
        ''' vraci vyrenderovany kod html'''
        class DataReq:
            def __init__(self):
                self.data=''
            def write(self,data,*arg):
                self.data+=data
        req=DataReq()
        oldWrite=self.app.req.write
        self.app.req.write=req.write
        self.app.req.content_type = "text/html"
        try:
            tmpl = psp.PSP(self.app.req,filename="%s.htm" % self.name)
            tmpl.run(self._vars)
        finally:
            self.app.req.write=oldWrite
        return str(req.data)

-- 
Mirek N.



Další informace o konferenci Python