[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