I have deployed my simple pet project yesterday, based on web.py.
I simply loved to work with this framework, very pythonic and flow
oriented :); this week i will introduce Pablo Antonio solution to
properly handle dynamic context on layout.html.
Check it out: http://tinyurl.com/yfk6nau.

thanks
Michele

On Jan 31, 5:53 pm, MLTrim <[email protected]> wrote:
> Thanks to everyone that have replied to this post.
> I think i will go with Pablo Antonio solution.
>
> Another solution is to use ajax from layout.html and get values from
> exposed apis that talk in Json.
> I had adopted this way before posting this question :).
>
> Michele
>
> On Jan 29, 10:23 pm, Angelo Gladding <[email protected]> wrote:
>
> > This should work as well — as simply as possible — using globals all
> > around. Don't add any more complexity than the statements `visitors +=
> > and -= 1` or your run the risk of no longer being thread-safe. But if
> > this is all you need..
>
> > ## code.py
>
> > visitors = 0
>
> > render = Render('templates', base='base', globals={'visitors': visitors})
>
> > class Landing:
> >   def GET(self):
> >     return render.landing()
>
> > class SignIn:
> >   def POST(self):
> >     visitors += 1
> >     return 'one more user eating my cycles'
>
> > class SignOut:
> >   def POST(self):
> >     visitors -= 1
> >     return 'one less user eating my cycles'
>
> > ##templates/base.html
>
> > $def with (document)
> > <html><body>
> > <article>$:document</article>
> > <footer>Currently $visitors visitors.</footer>
> > </body></html>
>
> > ## templates/landing.html
>
> > $def with ()
> > <p>Welcome to the landing of my site.</p>
>
> > ## output
>
> > <html><body>
> > <article><p>Welcome to the landing of my site.</p></article>
> > <footer>Currently 0 visitors.</footer>
> > </body></html>
>
> > On Fri, Jan 29, 2010 at 12:45 PM, jlist9 <[email protected]> wrote:
> > > I actually tried your code and it worked well after I fixed a small issue:
>
> > >         return getattr(self.render, self.base)(content, **base_args)
> > > -->
> > >         return getattr(self.render, self.base)(content, **self.base_args)
>
> > > Thanks!
>
> > > On Thu, Jan 28, 2010 at 1:42 AM, Pablo Antonio <[email protected]> wrote:
> > >> You could do something like the following code. Be aware that I didn't
> > >> test it, and it looks like too much magic :) Here it is:
>
> > >> -- layout.html
> > >> $def with (content, visitor_numbers)
> > >> <p>Numbers: $visitor_numbers</p>
> > >> <p>$:content</p>
>
> > >> -- pages.py
>
> > >> import web
>
> > >> class RenderInContext:
>
> > >>    def __init__(self, dir = 'templates/', base, **base_args):
> > >>        self.render = web.template.render(dir)
> > >>        self.base = base
> > >>        self.base_args = base_args
>
> > >>    def __getattr__(self, tpl):
>
> > >>        def f(**tpl_args):
> > >>            content = getattr(self.render, tpl)(**tpl_args)
> > >>            return getattr(self.render, self.base)(content, **base_args)
>
> > >>        return f
>
> > >> render_in_context = RenderInContext('templates/', base = 'layout',
> > >>    visitor_numbers = '20')
>
> > >> render_in_context.index(foo = bar)
>
> > > --
> > > You received this message because you are subscribed to the Google Groups 
> > > "web.py" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to 
> > > [email protected].
> > > For more options, visit this group 
> > > athttp://groups.google.com/group/webpy?hl=en.
>
> > --
> > Angelo Gladding
> > [email protected]http://angelo.gladding.name/

-- 
You received this message because you are subscribed to the Google Groups 
"web.py" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/webpy?hl=en.

Reply via email to