###質問内容
wagtailのライブラリを漁っています。その中でエディター向けにガイドを設定できるというライブラリを発見しました。リリースは2019年のものです。
実装しようと手順通りに進めていたのですが、途中でうまくいかなくなりました。調べながら進めているのですが、手詰まりとなってしまいました。ご指導のほどよろしくお願いします。
#問題コードとエラー
python
1from django.shortcuts import render 2from .models import EditorGuide 3 4 5def index(request): 6 # There should only ever be one instance of the guide 7 # But we need to check the site in case there is a 'per' site guide 8 # On a multisite setup 9 content = EditorGuide.objects.all().filter(site=request.site).first() 10 11 # Send a boolean to populate a menu if there are more than 12 # one 'heading' block type. 13 nav = False 14 if content: 15 if len([i.block_type for i in content.sections if i.block_type=='heading']) > 1: 16 nav = True 17 18 return render(request, 'wagtail_guide/base.html', { 19 'content': content, 20 'nav': nav 21 })
python
1#この部分が怪しいと踏んでいます。 2 content = EditorGuide.objects.all().filter(site=request.site).first()
error
1AttributeError: 'WSGIRequest' object has no attribute 'site'
###ためしたこと
これを参考に、settings.pyに
python
1MIDDLEWARE = ['django.contrib.sites.middleware.CurrentSiteMiddleware',]
を追加しました。
また先ほどのURL内に
See the Wagtail 2.9 release notes. Going forward you should use either {% wagtail_site %} or {{ page.get_site}} in templates and Site.find_for_request(request) in python code.
といったコメントがありましたので、これを参考に
from wagtail.core.models import Site #htmlには <h1>Welcome to the {{ current_site.site_name }} website!</h1> #や {% wagtail_site %} or {{ page.get_site}} #を入れてみたり、 #views.pyにたいしては def get_menu_items(request): return Site.find_for_request(request).root_page.get_children().live() #や Site.find_for_request(request) #といったコードを書いてみたりしたのですが、構文が間違っているらしく以上のエラーが出ました。
構文の書き換えなどまだ不慣れな点があるため、お手数かけますがご指導のほどよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。