我的項目目錄看起來像這樣。 settings_value.py
有一個模板標籤,其中名爲'settings_value'。在我的settings.py中,我添加了'itslogical.templatetags'到INSTALLED_APPS
。我嘗試在logicalhp/home.html
中使用它,但它表示標記不存在。我使用的代碼來自this answer(我將名稱從'value_from_settings'更改爲'settings_value')。如何讓Django識別自定義模板標籤?
.
├── 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))
我把它和更新的問題。錯誤很奇怪,所以也許我在代碼中做了一些錯誤... – FakeRainBrigand