2011-12-26 77 views
0

我想制作自定义模板标签,然后按照here的步骤进行操作。据说我需要将我的模板标签存储在应用程序的目录中。所以我创建了一个新的应用程序,将模板标签放在那里,并将应用程序包含在installed APPS中。如何在Django中发现自定义模板标签

但是,当我尝试load模板标签在我的模板,我得到以下错误:

'generic_tags' is not a valid tag library: Template library generic_tags not found, 

当我看到它搜索的目录中,templatetags库为我的应用程序是不在那里。这意味着它不会在我创建的应用中搜索模板标签。我是否还需要在我的settings.py文件中添加任何内容?

我templatetag定义文件是

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

该目录是'templatetags'而不是'templatetag' – 2012-08-15 22:21:01

回答

0

你创建

__init__.py 

在templatetags目录中? Exec

register = template.Library() 

in you file?

+0

是的我已经完成了这两件事。 – Sachin 2011-12-26 12:41:12

0

确保您的之前您的templatetag定义。如果是在它不能工作。还要确保init .py存在于templatetag目录中,并检查其余的错误输出以查看是否有其他任何有用的信息。

+0

是的,我已经完成了这两件事......我已经添加了我的模板标签定义文件 – Sachin 2011-12-26 16:13:48

相关问题