7

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

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

需要一些这样的

My-Project-Name
  templatetags
    __init__.py
4

2 回答 2

9

这个有可能。只需将您的templatetags.py或 templatetags 目录的位置添加到 Djangosettings.pyOPTIONSTEMPLATES 设置中。

在我的情况下,我将我的模板标签放在libs/位于项目根目录中的目录中。
您有两个选择,builtins或者libraries

TEMPLATES = [{
    ...
    'OPTIONS': {
        ...
        'builtins': [
            'libs.templatetags'
        ],
        # or as @x-yuri pointed out, you can put them in `libraries`
        'libraries': {
            'my_tags': 'libs.templatetags',
        },
    }
}]

如果您使用builtins,它随处可用,您无需为此使用{% load %}
如果你使用libraries你需要使用{% load my_tags %}.

于 2019-03-21T22:30:56.130 回答
2

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

从以下文档templatetags

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

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

于 2014-07-07T02:04:34.273 回答