Django:构建全局模板标签的最佳实践是什么?

med*_*iev 4 django

我意识到模板标签主要用于特定于INSTALLED_APPS的应用程序,例如articles/templatetags /,但在我的情况下,我需要标签用于通用的东西,例如没有应用程序的导航.

我目前正在保留templatetags我的项目目录.并且为了让它被拿起来我添加了我的项目INSTALLED_APPS- 这是有效的,但我不确定这是否是正确的做法 - 有任何缺点吗?

Fel*_*ing 6

我会做同样的方式Django提供了额外的模板标签,即创建一个自己的包/应用程序(django.contrib.humanize,django.contrib.markup,django.contrib.webdesign)

这些只是三个"普通"包,templatetags里面有一个包.内部模块的名称tempaltetags与包/应用程序名称相同(例如humanize.py).

然后把它放在Python可以找到它的地方.

您还可以创建某种"元"包templatetags并将所有内容放在那里,例如

templatetags
 - navigation
   - __init__.py
   - templatetags
      - _init__.py
      - navigation.py
 - other
  - ...
Run Code Online (Sandbox Code Playgroud)

当然,您必须将这些添加到您INSTALLED_APPS(例如templatetags.navigation)并将其加载到您的模板中(例如{% load navigation %}).