2011-12-22 8 views
3

templatetagsフォルダを自分のアプリケーション内に作成し、posts.pyという名前のファイルに作成しました。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です。

(私はあなたも空の__init__.pyがtemplatetagsディレクトリにあり、アプリケーションはINSTALLED_APPSであると仮定します)。

+1

私は上記のコードを編集しましたが、それでも同じエラーが表示されます。 – Sandeep

+1

間違いを見つけたので、間違った名前のファイルを読み込んでいただけです。今、{%load posts%} adnのようにタグを読み込んだ後、関数を{%get_all_posts%}として読み込みました。今、私はすべてのコンテキスト変数を使うことができました。それはどのように行われるのですか? – Sandeep

2

を使用すると、次のような構造を持っているとします

-- Application_Name 

-------templatetags 

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

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

-------__init__.py 

-------settings.py 

-- manage.py 

あなたは次のことを確認する必要があります。

  • あなたの「templatetags」常駐しているが、実際にINSTALLED_APPSにインストールされている内にアプリケーション自体in settings.py(例: "Application_Name")

  • "templatetags"内にあるあなたのタグモジュール自体は既にインストールされていますi n settings.pyのINSTALLED_APP(例: 「ApplicationName.templatetags.tempaltes_extras」)

  • あなたはtemplatetagsディレクトリ

  • の下に「__init__.py」を持っていることを確認続けるサーバーは、すべての生成を削除する必要がいくつかのケースでは

  • *を再起動する必要があります。 pycがうまく動作しない場合は、もう一度やり直してください。

+0

古い '* .pyc'ファイルを削除すると、私の問題が解決しました。ありがとう! – db0

関連する問題