2011-12-22 130 views
3

我創建我的應用程序內,一個名爲posts.py文件下面的代碼裏面,我已經寫了templatetags文件夾;的Django無法加載模板標籤

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

什麼是這個模板中的錯誤或有我錯過了一些東西在這裏。

回答

6

隨着load你需要使用庫的名稱,而不是標籤 - 所以posts你的情況。

(我假設你在templatetags目錄中還有一個空白的__init__.py,並且該應用程序在INSTALLED_APPS中)。

+1

嗯,我編輯了上面的代碼,但它仍然給我同樣的錯誤。 – Sandeep 2011-12-22 17:41:45

+1

我發現我的錯誤,我只是加載與錯誤的名稱的文件。現在,我已成功加載標籤作爲{%負載帖子%} ADN然後加載功能{%get_all_posts%}。現在,我可以使用所有的上下文變量。它是如何完成的? – Sandeep 2011-12-22 19:05:01

2

假設你有以下結構:

-- Application_Name 

-------templatetags 

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

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

-------__init__.py 

-------settings.py 

-- manage.py 

你必須確保以下幾點:

  • 您的應用程序本身內部的「templatetags」是居民實際安裝在INSTALLED_APPS settings.py中(如「APPLICATION_NAME」)

    存在內部「templatetags」
  • 您的標籤模塊本身已經安裝了我n在settings.py中的INSTALLED_APP(例如「ApplicationName.templatetags.tempaltes_extras」)

  • 保持確保您有「__init__.py」 templatetags目錄

  • 下,你必須重新啓動服務器

  • 在某些情況下,你必須刪除所有生成的*。 pyc如果它沒有工作,然後再次重試

+0

移除舊'* .pyc'文件解決了我的問題。謝謝! – db0 2016-07-16 20:36:41