|
Gregory (Grisha) Trubetskoy
grisha at modpython.org
Tue Nov 25 21:45:35 EST 2003
One of the ways to use PSP, which probably isn't immediately obvious from
the documentation, is as a templating system, e.g. configuring mod_python
to use the publisher handler, then have something like:
def hello(req):
vars = {"menu": build_menu(),
"blah": enormously_complex_function(),
"body": psp.PSP(req, 'templates/body_tmpl.html')}
return psp.PSP(req, 'templates/main_frame.html', vars=vars)
In this example 'body_tmpl.html' and 'main_fram.html' are PSP.
I've had pretty good luck with this approach precisely because it seems to
have a clear separation of logic and presentation.
Grisha
On Mon, 24 Nov 2003, Michael S. Fischer wrote:
> Dan W. wrote:
>
> > That's a good point Michael. That was probably a bad habit to pick up.
> > However, I think a overloaded import could still be useful. Overloading
> > the builtin import would allow a PSP file to control autoreloading for
> > its entire dependency tree (modules which call other modules, etc.).
> > This would allow one to easily turn autoreloading on during development
> > and to easily turn it off for production deployment.
>
> Consider that you might want not to use PSP. I've actually found that
> it gets in the way of the separation of code and content, which is
> important when the designer and the coder are two different people.
>
> I design my mod_python apps like so:
>
> template = """
> <html>
> ...
> <!-- have the designers place %(variable)s where necessary
> in the template for doing performing substitution
> during the processing phase -->
> </html>
> """
>
> def handler(req):
> # Reload modules here if necessary
> # Code goes here
> # If you want to override the template, you can fetch it from the file
> # system
> req.write(template % vars())
>
> Of course, if you're already married to the PSP solution, then there you
> have it...
>
> --Michael
>
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
> http://mailman.modpython.org/mailman/listinfo/mod_python
>
|