我想制作自定义模板标记,然后按照here给出的步骤进行操作。据说我需要将我的模板标签存储在应用程序的目录中。所以我创建了一个新的应用程序,将模板标签放在那里并将应用程序包含在installed APPS
中。
但是当我在模板中尝试load
模板标记时,我收到以下错误:
'generic_tags' is not a valid tag library: Template library generic_tags not found,
当我看到它搜索的目录时,我的应用程序的templatetags库就不存在了。这意味着它不会在我创建的应用中搜索模板标签。我是否还需要在settings.py
文件中添加任何内容?
我的模板标签定义文件是
import datetime
from django import template
from django.utils.translation import ugettext, ungettext
register = template.Library()
@register.filter(name='timesince_human')
def humanize_timesince(date):
if not date:
return
delta = datetime.datetime.now() - date
num_years = delta.days / 365
if (num_years > 0):
return ungettext(u"%d year ago", u"%d years ago", num_years) % num_years
num_weeks = delta.days / 7
if (num_weeks > 0):
return ungettext(u"%d week ago", u"%d weeks ago", num_weeks) % num_weeks
if (delta.days > 0):
return ungettext(u"%d day ago", u"%d days ago", delta.days) % delta.days
num_hours = delta.seconds / 3600
if (num_hours > 0):
return ungettext(u"%d hour ago", u"%d hours ago", num_hours) % num_hours
num_minutes = delta.seconds / 60
if (num_minutes > 0):
return ungettext(u"%d minute ago", u"%d minutes ago", num_minutes) % num_minutes
return ungettext(u"%d second ago", u"%d seconds ago", delta.seconds) % delta.seconds
并且它已存储在名为templatetag
的应用的utilityapp
目录中,我还包含了__init__.py
文件
答案 0 :(得分:0)
您的创作
__init__.py
在templatetags目录中? EXEC
register = template.Library()
在你的文件中?
答案 1 :(得分:0)
确保您的模板标签定义之前有register = template.Library()
。如果它之后它将无法正常工作。还要确保templatetag目录中存在 init .py,并检查错误输出的其余部分以查看是否还有其他用途。