Opened 9 years ago

Closed 9 years ago

Last modified 3 years ago

#1675 closed defect (worksforme)

application-specific templatetags aren't loaded

Reported by: shs Owned by: adrian
Component: Template system Version:
Severity: normal Keywords: templatetags load INSTALLED_APPS
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: yes UI/UX: yes

Description

The documentation for custom templatetags http://www.djangoproject.com/documentation/templates_python/#extending-the-template-system states that you can add a templatetags module to your app. If I understand the doc correctly, a {% load xyz %} tag will look for the library in myapp/templatetags/xyz.py and load it. The implementation doesn't do that, however, it only looks in django.templatetags and none of the application directories.

There are some old tickets on this, such as ticket:288 and ticket:86, but these have been closed as invalid. Not sure why, though, because the documentation still says it should work and it seems like a useful feature.

Attachments (1)

ticket_1675.diff (2.4 KB) - added by shs 9 years ago.
fix for magic-removal branch. This implementation uses the settings.INSTALLED_APPS list to generate the search path for custom template tags

Download all attachments as: .zip

Change History (10)

Changed 9 years ago by shs

fix for magic-removal branch. This implementation uses the settings.INSTALLED_APPS list to generate the search path for custom template tags

comment:1 Changed 9 years ago by lukeplant

It works exactly as documented for me (except that 'from django.core import template' is now 'from django import template' in m-r. I presume that the code that implements this is in django/templatetags/__init__.py

comment:2 Changed 9 years ago by lukeplant

  • Resolution set to worksforme
  • Status changed from new to closed

comment:3 Changed 9 years ago by ubernostrum

  • Resolution worksforme deleted
  • Status changed from closed to reopened

On a fresh checkout of m-r, using identical imports to the built-in templatetag library, I'm getting the same error -- Django is only looking in 'django.templatetags' and not in any of the installed apps.

comment:4 Changed 9 years ago by ubernostrum

On further examination, the admin templatetags get loaded just fine, but templatetags in my own apps don't. Need to dig into it further.

comment:5 Changed 9 years ago by ubernostrum

My problem turned out to be completely unrelated; tag libraries do work as advertised, so long as you create them according to the docs (I had a subtle problem that I didn't catch until I was knee-deep in the template system).

But... exploring this brought some un-removed magic to my attention. For details, see this thread on django-developers: http://groups.google.com/group/django-developers/browse_thread/thread/f9aec919b1449539/6b5b90659b4186ce#6b5b90659b4186ce

comment:6 Changed 9 years ago by adrian

  • Resolution set to worksforme
  • Status changed from reopened to closed

Closing this because it works as documented.

comment:7 Changed 3 years ago by nick@…

  • Easy pickings unset
  • UI/UX unset

In case anyone is still paying attention, my experience is that it appears to only look in the admin dirs until you restart the server. When I created a module using the dev server, it didn't find the templatetags module UNTIL I had restarted the dev server. Not sure what your policy is on this, but I think it should be either fixed or clearly stated in the documentation at the location where tag module creation is described.

comment:8 Changed 3 years ago by anonymous

  • Easy pickings set
  • UI/UX set

comment:9 Changed 3 years ago by anonymous

agh - just saw that this is an incredibly old bug - I'll post elsewhere for django 1.3

Note: See TracTickets for help on using tickets.
Back to Top