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