Yes this is a much better design pattern.  I will just make a file of
these helpers and include them all at once.

Thanks massimo!

On Sep 9, 10:32 pm, Massimo Di Pierro <[email protected]>
wrote:
> Why not do:
>
> in friend_selector.html
>
> {{def selector(id=None):}}
>                 <div class="friend_selector">
>                         <div class="access_photos" users="[]"></div>
>                         <input {{if id:}}id="{{=id}}"{{pass}}
> name="access_input"
> class="access_input" size="30" type="text" value="" />
>                 </div>
> {{return}}
>
> and in the extending view {{include 'friend_selector.html'}}
> {{selector(id='main-access')}}
>
> This is already supported and allows to define more than one function
> in include. And it is more pythonic.
>
> On Sep 9, 10:12 pm, Michael Toomim <[email protected]> wrote:
>
>
>
>
>
>
>
> > I frequently write short snippets of HTML that I want to replicate in
> > many places, like:
>
> >                 <div class="friend_selector">
> >                         <div class="access_photos" users="[]"></div>
> >                         <input id="main_access_input" name="access_input"
> > class="access_input" size="30" type="text" value="" />
> >                 </div>
>
> > So I can put this into a .html file "friend_selector.html", and then
> > include it whenever I need this. But I often need to parameterize it.
> > For instance, I might want to set a different id each time.
>
> > So I do it like this:
>
> >         {{vars = {id : 'main_access_input'} }}
> >         {{include 'friend_selector.html'}}
> >         {{vars = {} }}
>
> > And then parameterize my html like this:
>
> >                 <div class="friend_selector">
> >                         <div class="access_photos" users="[]"></div>
> >                         <input {{if 
> > vars['id']:}}id="{{=vars['id']}}"{{pass}}
> > name="access_input" class="access_input" size="30" type="text"
> > value="" />
> >                 </div>
>
> > Basically, I'm re-inventing a function call via the {{include}}
> > feature. Wouldn't it be awesome if this just happened automatically???
> > Like this:
>
> >         {{include 'friend_selector.html' (id='main_access_input')}}
>
> > Would you like this feature? Does this sound hard to implement?
>
> > Appendix:
> > 1. You can also do this I think with template inheritance, but that's
> > just complicated. Or you could define and call parameterized functions
> > in python, but editing embedded html in python strings is gross.
> > 2. The (id='main_access_input') part would ideally be a full python-
> > style parameter list, supporting e.g. (a=1, b=3). This is simpler to
> > implement. But to support positional args, like (1,3,5, a=1), the html
> > blocks would need to declare their supported parameters. They could do
> > so with by including a "declare" snippet like this:
>
> >                 {{ declare (a, b, c, id=None): }}
> >                 <div class="friend_selector">
> >                         <div class="access_photos" users="[]"></div>
> >                         <input {{if id:}}id="{{=id}}"{{pass}} 
> > name="access_input"
> > class="access_input" size="30" type="text" value="" />
> >                 </div>

Reply via email to