[mod_python] running templates, was segmentation fault

Wouter van Marle wouter at squirrel-systems.com
Wed Jun 7 04:09:38 EDT 2006


This sounds very similar to my set-up.
I have a base template.psp, containing the html header with css
includes, and some divs, like:
<html><head>
	header stuff
</head><body>
	common banner
<div id=navbar><%=navbar%></div>
<div id=body><%=body%></div>
	common footer
</body></html>

Separately I have a python script, that parses the various parts. These
body and navbar parts are often psp files with variables to be entered
in their own right: I put them through the psp interpreter first, catch
back the html as string (use _psp instead of psp which causes the page
to be published), and put these strings in the variables as given above.
Works like a charm! Templates are in:
./templates/template.psp (the main template)
./templates/en/body.psp (the English body and other templates)
./templates/cncn/body.psp (the Chinese simplified body and other
templates)
./templates/cnhk/body.psp (the Chinese traditional body and other
templates)
Just keep a variable language set to the correct language, and with
"os.path.join(TEMPLATEPATH, language, templatefilename)" I can very
easily get the right template, add it in the main body, etc. 
Change the main body: changes are all over.
Change the css files: layout changes all over.

Hope it's useful for you.

Wouter.

On Wed, 2006-06-07 at 09:21 +0200, Julien Cigar wrote:
> Jim's right, my idea was to do a kind of "main" template container, 
> something like :
> 
> <html>
> <head>...</head>
> <body>
> <div id="container">
>   <div id="header"> ... </div>
>   <div id="menu"> ... </div>
>   <div id="anothercommonpart"> ... </div>
> 
>   <div id="main">
>     <!-- MAIN STUFF GOES HERE -->
>     <%@ include file = "..." %>
>   </div>
> 
>   <div id="footer">...</div>
> </div>
> 
> in my example "body_template = psp.PSP(req, filename="list.psp")" whould 
> be the included file and the "mytemplate.run({'body' : body_template})" 
> would be the "main" template.
> Both are psp.PSP() instances. I thought I could to something like :
> 
> body_template = psp.PSP(file="foobar.psp")
> main = psp.PSP(file="main_template.psp")
> main.run(dict(body=body_template))
> 
> and later in the "main" template and <%@ include file="<%= body %>" %>, 
> but as Jim said this doesn't work ...
> 
> Julien
> 
> Jim Gallacher wrote:
> > David Bear wrote:
> >> On Tue, Jun 06, 2006 at 12:03:37PM -0400, Jim Gallacher wrote:
> >>> As an alternative you could do:
> >>>
> >>> body_template = psp.PSP(req, filename="list.psp")
> >>> mytemplate.run({'body' : body_template})
> >>
> >> this syntax baffles me. where is 'mytemplate' defined? and what kind
> >> of an object is it?
> >
> > It's a reference to snippet of code in Julien's message. Since the 
> > thread was discussing psp templates, one can assume his reference to 
> > mytemplate.run() refers to a PSP instance created elsewhere in his 
> > code which was not in the message but can be inferred.
> >
> > Jim
> >
> > _______________________________________________
> > Mod_python mailing list
> > Mod_python at modpython.org
> > http://mailman.modpython.org/mailman/listinfo/mod_python
> >
> 
> 



More information about the Mod_python mailing list