使用“templatetags”的自定义目录

问题描述 投票:2回答:2

有人知道它是否可能使用自定义目录“templatetags”eje:“my-project / templatetags”

Normal
My-Project-Name
  My-App
    __init__.py
      templatetags
        __init__.py

需要一些这样的

My-Project-Name
  templatetags
    __init__.py
django django-1.7
2个回答
2
投票

这是不可能的。原因是,templatetags必须驻留在django应用程序中。

来自documentation of templatetags

自定义模板标记和过滤器必须位于Django应用程序中。如果它们与现有应用程序相关,那么将它们捆绑在那里是有意义的;否则,你应该创建一个新的应用程序来保存它们。

该应用程序应包含一个templatetags目录,与models.py,views.py等处于同一级别。如果这不存在,请创建它 - 不要忘记__init__.py文件以确保该目录被视为Python包。添加此模块后,您需要重新启动服务器,然后才能在模板中使用标记或过滤器。


1
投票

这个有可能。也许不是首选但可能。只需将templatetags.py或templatetags目录的位置添加到djangos settings.py即可。

在我的例子中,我将我的templatetags放在位于root中的libs/目录中。

TEMPLATES = [{
    ...
    'OPTIONS': {
        ...
        'builtins': [
            'libs.templatetags'
        ]
    }
}]

PS!之后,您可以在所有模板上使用它,并且您不需要使用{% load %}来加载这些模板标记。

© www.soinside.com 2019 - 2024. All rights reserved.