###補足
もしわかりにくい点などがあれば教えてください。本当に自分では力不足です。
ヒントでもいいです。足りない点があればご指摘ください。
{{ self.article_title }}などにするとhtml上にはh3タグを残したまま、ディスプレイ上からは消えます。
ありがとうございます。指示通りトライしてみました。すると”MultiValueDictKeyError: 'content-0-value-articles-count'”が出ましたので、def super(): Passを'NoneType' object has no attribute 'get_context'のエラーが出ました。def get_context(self, request, *args, **kwargs):をいじればよいのでしょうか?
前提・実現したいこと
wegtail(Django用CMS)を使ってニュースアプリのようなものを作ろうとしています。
Blocks.pyで作成したクラスをmodels.pyで継承、htmlをコーディングしました。
しかし、HTML上で認識されているようですが表示がされませんでした。
3時間ぐらい試行錯誤しましたが先に進めないため、質問いたしました。
発生している問題・エラーメッセージ
エラーメッセージは特にありません。認識されてはいるものの表示されていないのが今回の問題点です。 以下の写真は、<h3>{{ self }}</h3>で表示しています。コード内の場所はコメントを参考にしてください。
該当のソースコード
Python
1#streams/blocks.py 2 3#記事情報の入力クラス 4class ArticleIndexBlock(blocks.StructBlock): 5 articles = blocks.ListBlock( 6 blocks.StructBlock( 7 [ 8 ("article_image", ImageChooserBlock(required=True)), 9 ("article_title", blocks.CharBlock(required=True, max_length=40)), 10 ("article_text", blocks.TextBlock(required=True, max_length=200)), 11 ("article_url", blocks.URLBlock(required=False)), 12 ] 13 ) 14 ) 15 16 class Meta: 17 template = "streams/article_index_block.html" 18 icon = "edit" 19 label = "Article"
python
1#articles/models.py 2 3#Streams/blocks.pyから継承したクラスをモデル化 4class ArticleIndexPage(Page): 5 template = "articles/article_index.html" 6 7 content = StreamField( 8 [ 9 ("article_index_block", blocks.ArticleIndexBlock()), 10 ], 11 null=True, 12 blank=True, 13 ) 14 15 content_panels = Page.content_panels + [ 16 StreamFieldPanel("content"), 17 ] 18 19 def get_context(self, request, *args, **kwargs): 20 context = super().get_context(request, *args, **kwargs) 21 context["posts"] = ArticleIndexPage.objects.live().public() 22 return context 23 24 class Meta: 25 verbose_name = "Article index Page" 26 verbose_name_plural = "Article index Pages"
html
1<!--article_index.html--> 2 3{% extends 'base.html' %} 4{% load wagtailcore_tags %} 5 6{% block content %} 7 <h1>{{ self.title }}</h1> 8 9 10 {% for block in page.content %} 11 {% include_block block%} 12 {% endfor %} 13 14{% endblock content %}
HTML
1<!--article_index_block.html--> 2 3<div class="container"> 4 <h3>{{ self.article_title }}</h3> 5<!--写真箇所--> 6 7</div> 8 9</hr> 10
試したこと
0念のため、article_index_block.htmlのh3タグの変数名selfをpageなどに、ピリオド以下をtitleなどに変えました。
回答1件
あなたの回答
tips
プレビュー