Is there a way to create a custom tag that can be used in different
applications at the same time, so that I could make the call on the
"base.html" template? The custom tag, here, is a blog subjects menu,
which I
want to use in all the pages (all the apps) of the website, in the
frontend.
I know that I must create a "templatetags" subdirectory, to act as a
module, inside the apps, if I want to create a template tag for that
app,
but what if I want to make it visible to all apps and callable from a
base
template?
On Thu, Jul 2, 2009 at 10:55 PM, diogobaeder<diogobae...@gmail.com> wrote:
> Hi there,
> Is there a way to create a custom tag that can be used in different > applications at the same time, so that I could make the call on the > "base.html" template? The custom tag, here, is a blog subjects menu, > which I > want to use in all the pages (all the apps) of the website, in the > frontend.
> I know that I must create a "templatetags" subdirectory, to act as a > module, inside the apps, if I want to create a template tag for that > app, > but what if I want to make it visible to all apps and callable from a > base > template?
> Thanks!
If it only needs to be called in the base template, you could just {% load %} and call it there as normal.
But where do I put the custom template, than? If I load it from an app
template, I must create it under <app>/templatetags/, and what if I
want to call it from the base template? <project_root>/templatetags/?
Thanks!
Diogo
On Jul 2, 9:23 pm, Jonathan Buchanan <jonathan.bucha...@gmail.com>
wrote:
> On Thu, Jul 2, 2009 at 10:55 PM, diogobaeder<diogobae...@gmail.com> wrote:
> > Hi there,
> > Is there a way to create a custom tag that can be used in different
> > applications at the same time, so that I could make the call on the
> > "base.html" template? The custom tag, here, is a blog subjects menu,
> > which I
> > want to use in all the pages (all the apps) of the website, in the
> > frontend.
> > I know that I must create a "templatetags" subdirectory, to act as a
> > module, inside the apps, if I want to create a template tag for that
> > app,
> > but what if I want to make it visible to all apps and callable from a
> > base
> > template?
> > Thanks!
> If it only needs to be called in the base template, you could just {%
> load %} and call it there as normal.
> If it really does need to be available globally:
On 3 jul, 04:59, diogobaeder <diogobae...@gmail.com> wrote:
> But where do I put the custom template, than? If I load it from an app
> template, I must create it under <app>/templatetags/, and what if I
> want to call it from the base template? <project_root>/templatetags/?
> Thanks!
> Diogo
I think you are missing something here: there really is no app
namespacing in templatetags: if you try to load a tag library, django
will search the templatetags folders located underneath all installed
apps. If it finds one that matches, it will use that one. This means
that you can use a tag library from app X in any template you use (no
matter where it is located), as long as app X is in the installed
apps. The downside of this is that you need to name your tag libraries
wisely, because tags.py in app X and tags.py in app Y will conflict.
> On 3 jul, 04:59, diogobaeder <diogobae...@gmail.com> wrote:
> > But where do I put the custom template, than? If I load it from an app
> > template, I must create it under <app>/templatetags/, and what if I
> > want to call it from the base template? <project_root>/templatetags/?
> > Thanks!
> > Diogo
> I think you are missing something here: there really is no app
> namespacing in templatetags: if you try to load a tag library, django
> will search the templatetags folders located underneath all installed
> apps. If it finds one that matches, it will use that one. This means
> that you can use a tag library from app X in any template you use (no
> matter where it is located), as long as app X is in the installed
> apps. The downside of this is that you need to name your tag libraries
> wisely, because tags.py in app X and tags.py in app Y will conflict.
> On 3 jul, 04:59, diogobaeder <diogobae...@gmail.com> wrote:
> > But where do I put the custom template, than? If I load it from an app
> > template, I must create it under <app>/templatetags/, and what if I
> > want to call it from the base template? <project_root>/templatetags/?
> > Thanks!
> > Diogo
> I think you are missing something here: there really is no app
> namespacing in templatetags: if you try to load a tag library, django
> will search the templatetags folders located underneath all installed
> apps. If it finds one that matches, it will use that one. This means
> that you can use a tag library from app X in any template you use (no
> matter where it is located), as long as app X is in the installed
> apps. The downside of this is that you need to name your tag libraries
> wisely, because tags.py in app X and tags.py in app Y will conflict.
> I tried to make an initial template tag, just to test and learn, but
> it's not working. I followed the instructions here
> http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#howt... > and registered the compilation function, but it's not finding the
> module, like stated here in this stack trace, even though I've saved
> the _init_.py file:
> http://dpaste.com/63306/
> On Jul 3, 3:10 am, koenb <koen.bierm...@werk.belgie.be> wrote:
>> On 3 jul, 04:59, diogobaeder <diogobae...@gmail.com> wrote:
>>> But where do I put the custom template, than? If I load it from an app
>>> template, I must create it under <app>/templatetags/, and what if I
>>> want to call it from the base template? <project_root>/templatetags/?
>>> Thanks!
>>> Diogo
>> I think you are missing something here: there really is no app
>> namespacing in templatetags: if you try to load a tag library, django
>> will search the templatetags folders located underneath all installed
>> apps. If it finds one that matches, it will use that one. This means
>> that you can use a tag library from app X in any template you use (no
>> matter where it is located), as long as app X is in the installed
>> apps. The downside of this is that you need to name your tag libraries
>> wisely, because tags.py in app X and tags.py in app Y will conflict.
> > I tried to make an initial template tag, just to test and learn, but
> > it's not working. I followed the instructions here
> >http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#howt...
> > and registered the compilation function, but it's not finding the
> > module, like stated here in this stack trace, even though I've saved
> > the _init_.py file:
> >http://dpaste.com/63306/
> > On Jul 3, 3:10 am, koenb <koen.bierm...@werk.belgie.be> wrote:
> >> On 3 jul, 04:59, diogobaeder <diogobae...@gmail.com> wrote:
> >>> But where do I put the custom template, than? If I load it from an app
> >>> template, I must create it under <app>/templatetags/, and what if I
> >>> want to call it from the base template? <project_root>/templatetags/?
> >>> Thanks!
> >>> Diogo
> >> I think you are missing something here: there really is no app
> >> namespacing in templatetags: if you try to load a tag library, django
> >> will search the templatetags folders located underneath all installed
> >> apps. If it finds one that matches, it will use that one. This means
> >> that you can use a tag library from app X in any template you use (no
> >> matter where it is located), as long as app X is in the installed
> >> apps. The downside of this is that you need to name your tag libraries
> >> wisely, because tags.py in app X and tags.py in app Y will conflict.
Great, guys! Solved! Now I have a global custom tag for recursive
nested list in all the views! Nice! :-)
Next step: see if my hosting privider has python-memcache to put these
guys under a cache... doesn't sound nice to have these repeated
queries on a bank, considering they won't change so much... :-P
Thanks for the help, guys! Thread solved!
Diogo
On Jul 5, 1:09 pm, diogobaeder <diogobae...@gmail.com> wrote:
> Thanks, Yu, it was a lack of attention of mine, not just a typo... I
> corrected the file name, now the module is being found, thanks! :-)
> Diogo
> On Jul 5, 6:32 am, Ronghui Yu <stone...@gmail.com> wrote:
> > _init_.py should be
> > __init__.py
> > or just a typo error in the mail?
> > diogobaeder ??:
> > > Koen,
> > > I tried to make an initial template tag, just to test and learn, but
> > > it's not working. I followed the instructions here
> > >http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#howt...
> > > and registered the compilation function, but it's not finding the
> > > module, like stated here in this stack trace, even though I've saved
> > > the _init_.py file:
> > >http://dpaste.com/63306/
> > >> On 3 jul, 04:59, diogobaeder <diogobae...@gmail.com> wrote:
> > >>> But where do I put the custom template, than? If I load it from an app
> > >>> template, I must create it under <app>/templatetags/, and what if I
> > >>> want to call it from the base template? <project_root>/templatetags/?
> > >>> Thanks!
> > >>> Diogo
> > >> I think you are missing something here: there really is no app
> > >> namespacing in templatetags: if you try to load a tag library, django
> > >> will search the templatetags folders located underneath all installed
> > >> apps. If it finds one that matches, it will use that one. This means
> > >> that you can use a tag library from app X in any template you use (no
> > >> matter where it is located), as long as app X is in the installed
> > >> apps. The downside of this is that you need to name your tag libraries
> > >> wisely, because tags.py in app X and tags.py in app Y will conflict.