有人知道它是否可能将自定义目录用于“templatetags”eje:“my-project/templatetags”
Normal
My-Project-Name
My-App
__init__.py
templatetags
__init__.py
需要一些这样的
My-Project-Name
templatetags
__init__.py
有人知道它是否可能将自定义目录用于“templatetags”eje:“my-project/templatetags”
Normal
My-Project-Name
My-App
__init__.py
templatetags
__init__.py
需要一些这样的
My-Project-Name
templatetags
__init__.py
这个有可能。只需将您的templatetags.py
或 templatetags 目录的位置添加到 Djangosettings.py
到OPTIONS
TEMPLATES 设置中。
在我的情况下,我将我的模板标签放在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 %}
.
这是不可能的。原因是,templatetags
必须驻留在 django 应用程序中。
从以下文档templatetags
:
自定义模板标签和过滤器必须存在于 Django 应用程序中。如果它们与现有应用程序相关,则将它们捆绑在那里是有意义的;否则,您应该创建一个新应用程序来保存它们。
该应用程序应包含一个模板标签目录,与 models.py、views.py 等处于同一级别。如果不存在,请创建它 - 不要忘记该
__init__.py
文件以确保该目录被视为 Python 包. 添加此模块后,您需要重新启动服务器,然后才能在模板中使用标签或过滤器。