私のプロジェクトディレクトリは次のようになります。 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))