我的项目目录如下所示。 settings_value.py
有一个模板标签,名为“settings_value”。在我的 settings.py 中,我将 'itslogical.templatetags' 添加到INSTALLED_APPS
. 我尝试在 中使用它logicalhp/home.html
,但它说标签不存在。我正在使用此答案中的代码(我将名称从“value_from_settings”更改为“settings_value”)。
.
├── internetparse
│ └── ...
├── itslogical
│ ├── settings.py
│ ├── templates
│ │ └── itslogical
│ │ └── base.html
│ └─── templatetags
│ ├── __init__.py
│ └── settings_value.py
├── logicalhp
│ ├── templates
│ │ └── logicalhp
│ │ └── home.html
│ └── views.py
└── manage.py
需要帮助请叫我。我在这里想念什么?
编辑:添加代码和更新错误。这是基于@Dan 的回答。
500 ERROR:
'settings_value' is not a valid tag library: Template library settings_value not found
Template library settings_value not found, tried django.templatetags.settings_value ...
#!/usr/bin/env python
from django import template
from django.conf import settings
# Include settings from here in templates
register = template.Library()
# settings value
@register.tag
def settings_value(parser, token):
try:
# split_contents() knows not to split quoted strings.
tag_name, var = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError, "%r tag requires a single argument" % token.contents.split()[0]
return ValueFromSettings(var)
class ValueFromSettings(template.Node):
def __init__(self, var):
self.arg = template.Variable(var)
def render(self, context):
return settings.__getattr__(str(self.arg))