我有一个django项目和一个应用程序。我想要一个简单自定义模板标记。所以我创建了一个python文件:
#my_site/settings.py
INSTALLED_APPS = (
#.....
'my_app'
)
#my_site/my_app/templatetags/my_app/say_hello_tag.py
from django import template
register = template.Library()
@register.simple_tag
def say_hello(model_instance):
return model_instance.say_hello()
#my_site/my_app/templates/my_app/my_model_list.html
{% load say_hello_tag %}
....................................
<td>{% say_hello object %}</td>
错误是:
TemplateSyntaxError at /my_app_base_dir/
'say_hello_tag' is not a valid tag library: Template library say_hello_tag not found, tried django.templatetags.say_hello_tag, django.contrib.admin.templatetags.say_hello_tag, django.contrib.staticfiles.templatetags.say_hello_tag
我该如何解决?
答案 0 :(得分:0)
请参阅Django Custom template tags
应用程序应包含templatetags目录,与...相同 models.py,views.py等。如果这不存在,请创建它 - 不要忘记
__init__.py
文件以确保处理目录 作为Python包。添加此模块后,您将需要 重新启动服务器,然后才能使用标签或过滤器 模板。例如,如果您的自定义标记/过滤器位于名为的文件中 poll_extras.py,您的应用布局可能如下所示:
polls/
__init__.py
models.py
templatetags/
__init__.py
poll_extras.py
views.py
您的目录结构应类似于:
my_site/
my_app/
__init__.py
templatetags/
__init__.py
say_hello_tag.py
models.py
view.py
...
我认为您必须遵循Django文档中所述的结构布局才能做到这一点。