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.
