Нет, django.template.loaders.app_directories.load_template_source
совсем не требуется для работы пользовательских тегов шаблонов.
Вам не нужно указывать каталоги, чтобы указать django, откуда и откуда загружать библиотеки тегов библиотек (как мы делаем в случае шаблонов), просто coz django предполагает поиск библиотек шаблонов в приложениях, указанных в INSTALLED_APPS
список.
Он просто зацикливается на списке приложений INSTALLED_APPS
, импортируя все библиотеки из каталогов templatetags внутри, и импортируя каждую из них, чтобы сделать их доступными. Если каталог с именем templatetags не найден, он просто пропускается. Но он пытается просмотреть все доступные опции в INSTALLED_APPS.
Вы можете взглянуть на код в django/templatetags/__init__.py
, и вы узнаете, как теги шаблона сделали (волшебным образом) доступными. Посмотрите на код,
from django.conf import settings
for a in settings.INSTALLED_APPS:
try:
__path__.extend(__import__(a + '.templatetags', {}, {}, ['']).__path__)
except ImportError:
pass
Он просто добавляет список этих модулей в __path__
. И все, что перечислено в __path__
, будет рассматриваться так, как если бы оно также существовало как субмодуль модуля, в списке которого __path__
оно появляется.