Django无法加载模板标记

时间:2011-12-22 17:19:43

标签: django django-templates django-views

我在我的应用程序中创建了一个templatetags文件夹,在一个名为posts.py的文件中,我编写了以下代码;

from django.template import Library, Node
from advancedviews.models import Post
register = Library()
class AllPost(Node):
    def render(self,context):
        context['all_posts'] =  Post.objects.all()
        return ''
def get_all_posts(parser,token):
    return AllPost()
get_all_posts = register.tag(get_all_posts) 

现在,我尝试在模板中加载此模板标记;

{% load get_all_posts %}

但是这给了我错误'get_all_posts' is not a valid tag library: Template library get_all_posts not found, tried django.templatetags.get_all_posts,django.contrib.admin.templatetags.get_all_posts

此模板中的错误是什么,或者我在这里遗漏了什么。

2 个答案:

答案 0 :(得分:6)

使用load,您需要使用库的名称,而不是标记 - 因此posts就是这样。

(我假设你在templatetags目录中也有一个空白__init__.py,并且该应用程序位于INSTALLED_APPS)。

答案 1 :(得分:2)

假设您具有以下结构:

-- Application_Name

-------templatetags

--------------__init__.py

--------------templates_extras.py

-------__init__.py

-------settings.py

-- manage.py

您必须确保以下内容:

  • 您的“templatetags”所在的应用程序本身实际安装在settings.py中的INSTALLED_APPS中(例如“Application_Name”)

  • “templatetags”中存在的标记模块本身已安装在settings.py的INSTALLED_APP中(例如“ApplicationName.templatetags.tempaltes_extras”)

  • 确保您在templatetags目录下有“__init__.py

  • 您必须重新启动服务器

  • 在某些情况下,如果无效,则必须删除所有生成的* .pyc,然后重试