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

时间:2010-02-14 21:17:56

标签: django

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

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

1 个答案:

答案 0 :(得分:6)

我会这样做,就像Django提供额外的模板标签一样,即创建一个自己的包/应用程序(django.contrib.humanizedjango.contrib.markupdjango.contrib.webdesign

这些只是三个“普通”包,其中包含templatetags个包。 tempaltetags中的模块名称与包/应用程序名称相同(例如humanize.py)。

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

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

templatetags
 - navigation
   - __init__.py
   - templatetags
      - _init__.py
      - navigation.py
 - other
  - ...

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