2017-03-06 11 views
1

私はWagtail documentation on Snippetsをフォローしています。しかし、つまずきを見つけた。 models.pyファイルに広告のモデルを追加しました。demo_tags.pyファイルを作成しています。現在、それは読み - 私は、開発サーバを実行するとスニペットでWagtail文書を処理するときのInvalidTemplateLibrary例外

from django import template 
from demo.models import * 

register = template.Library() 

... #don't know if something is supposed to go in here 

# Advert snippets 
@register.inclusion_tag('demo/tags/adverts.html', takes_context=True) 
def adverts(context): 
    return { 
     'adverts': Advert.objects.all(), 
     'request': context['request'], 
    } 

from demo.models import *ラインがInvalidTemplateLibraryエラーを作成します。

私は明らかに「デモ」と「*」を何かで置き換えることになっていますが、何ですか?

また、adverts.htmlと呼ばれるテンプレートの作成に関しては、どのディレクトリを入力する必要がありますか? templatetags 1、または他のブログテンプレートを使用していますか?

ありがとうございました。

+0

エラーメッセージは何ですか? – gasman

+0

無効なテンプレートライブラリが指定されています。 'blog.templatetags.demo_tags'を読み込もうとしたときに発生したImportError: 'demo'という名前のモジュールがありません –

答えて

0

demo.modelsは、AdvertモデルがWagtailデモWebサイトで定義されているモジュールを指します。こうした新しいセキレイプロジェクトで作成されていますhome/models.pyファイルとして - - あなたが他のどこかでこのを定義した場合は、それに応じてこれを変更する必要があります:

from home.models import * 

あなたはあなたのアプリケーション内の場所templates/demo/tags/adverts.htmlでadverts.htmlクレタべきディレクトリ。より一般的には、Djangoは、プロジェクト内のすべての有効なテンプレートの場所に関連して、あなたが与えたパス( 'demo/tags/adverts.html')でテンプレートを探します。これは通常、存在するすべてのアプリケーションの 'templates'あなたのプロジェクトで。

+0

'Advertisement'が定義されているので、' blog.models import Advert、BlogIndexPage、BlockPage'に変更しました。エラーメッセージ:) –

+0

今私はすべての順序を持​​っているようです。私はモデルとテンプレートを作成し、ビューを動作させ、{%adverts%}を 'blog_page'テンプレートに追加しましたが、開発サーバーを実行してブログページを編集するとスニペットを表示/編集できません。何か不足していますか? –

+0

私はあなたが意味することを理解していません - しかし、それはこの質問とは別のように思えます。新しい質問を開き、あなたが何をもっと詳しくしようとしているか説明してください。 – gasman