wagtail は、素のアプリケーションをインストールすると、テンプレート等はインストールされません。   
Blog 用途で使用する場合は、springload/awesome-wagtail: A curated list of awesome packages, articles, and other cool resources from the Wagtail community. に記載されている Blog 用途の拡張プラグインを使うのがよさそうです。   
個人的な目的で、イチから Model を作りたかったので、Your first Wagtail site — Wagtail 1.13.1 documentation を参考に Blog を作成してみました。  
結果を以下に記載します。     
前提
以下の環境で作業は実施しています。
- 
OS
% sw_vers ProductName: Mac OS X ProductVersion: 10.13.1 BuildVersion: 17B1003 - 
Python の Version
% python3 -V Python 3.6.2 
Blog作成
Blog アプリケーションの作成
Blog 用のアプリケーションを作成します。  
python3 manage.py startapp blog 
BlogIndexPage の作成
作成した blog アプリケーションの、models.py に、BlogIndex を追加します。    
- blog/models.py 
from wagtail.wagtailcore.models import Page from wagtail.wagtailcore.fields import RichTextField from wagtail.wagtailadmin.edit_handlers import FieldPanel class BlogIndexPage(Page): intro = RichTextField(blank=True) content_panels = Page.content_panels + [ FieldPanel('intro', classname="full") ] 
この BlogIndexPage に対するテンプレートファイルを作成します。
- blog/templates/blog/blog_index_page.html  
{% extends "base.html" %} {% load wagtailcore_tags %} {% block body_class %}template-blogindexpage{% endblock %} {% block content %} <h1>{{ page.title }}</h1> <div class="intro">{{ page.intro|richtext }}</div> {% for post in page.get_children %} <h2><a href="{% pageurl post %}">{{ post.title }}</a></h2> {{ post.specific.intro }} {{ post.specific.body|richtext }} {% endfor %} {% endblock %} 
BlogPage の作成
model.py に BlogPage を追加します。      
BlogIndexPage に更に追記する形になりますので、全量を記載します。    
- 
blog/models.py
from django.db import models # Create your models here. from wagtail.wagtailcore.models import Page from wagtail.wagtailcore.fields import RichTextField from wagtail.wagtailadmin.edit_handlers import FieldPanel from wagtail.wagtailsearch import index class BlogIndexPage(Page): intro = RichTextField(blank=True) content_panels = Page.content_panels + [ FieldPanel('intro', classname="full") ] class BlogPage(Page): date = models.DateField("Post date") intro = models.CharField(max_length=250) body = RichTextField(blank=True) search_fields = Page.search_fields + [ index.SearchField('intro'), index.SearchField('body'), ] content_panels = Page.content_panels + [ FieldPanel('date'), FieldPanel('intro'), FieldPanel('body', classname="full"), ] - 
blog/templates/blog/blog_page.html
{% extends "base.html" %} {% load wagtailcore_tags %} {% block body_class %}template-blogpage{% endblock %} {% block content %} <h1>{{ page.title }}</h1> <p class="meta">{{ page.date }}</p> <div class="intro">{{ page.intro }}</div> {{ page.body|richtext }} <p><a href="{{ page.get_parent.url }}">Return to blog</a></p> {% endblock %} 
Migrationを実施
Migration を実施します。実施前に、base.py の INSTALLED_APPS に blog アプリケーションを追加します。   
- 
アプリケーションの追加
# Application definition INSTALLED_APPS = [ 'home', 'search', 'blog', - 
Migrationの実行
python3 manage.py makemigrations python3 manage.py migrate 
Blog の投稿をしてみる
この状態でBlog の投稿を行います。
- 
サーバ起動
python3 manage.py runserver - 
ログイン
http://127.0.0.1:8000/admin/からログインします。
 - 
ページメニューから遷移
左メニューから、サイトの Root ページ に遷移します。
 - 
Rootページ
既存サイトにページ追加する場合は、Home ページの 子ページとして、ページは追加する旨の説明があります。
Home ページ配下に移動します。 - 
子ページを追加をクリック
HOMEページに移動して、子ページを追加をクリックします。
 - 
BlogIndexページを追加
Blog Index Page を追加します。
 - 
コンテンツの内容の入力 コンテンツの内容を入力して、
プロモートタブをクリックします。
 - 
URLの変更
スラッグに、URL を入力します。HOME がドメイン直下で、ドメイン直下からのURLになります。
この場合は、http://127.0.0.1/blogでアクセスできます。
入力後画面下部のプルダウンから公開を選択します。
 - 
Blogページを追加
続いて BlogIndex ページの子ページとして、Blog ページを追加します。
手順は BlogIndex 追加時と同様です。以下は Blog ページを3ページ子ページとして追加しています。
 - 
フロント側から閲覧
以下のように表示されます。
 
wagtail の機能について補足
以下、wagtail の template、model の機能について補足します。
- 
{% for post in page.get_children %}について
page.get_childrenで、表示対象ページの子ページが取得できます。
今回の場合、BlogIndex の 子ページとして、3ページあるので、それらが取得されています。 - 
page.get_parent.urlについて
表示対象ページの親ページのURLが取得できます。 - 
content_panelsについて
model のcontent_panelsですが、このList に追加したフィールドがADMIN で編集可能になります。
試しに削除してみたところ、ADMIN に対象項目が表示されなくなりました。 
このほかにも、Your first Wagtail site — Wagtail 1.13.1 documentation には、Image や、Tagを追加するサンプルが記載されていますが、最低限登録ができるようになったので、一旦別のことを進めます。  
以上です。
コメント