我最近将我的wagtail应用程序升级到最新版本2.9,因为不赞成使用wagtail网站中间件,所以我无法使我的网站正常工作。我正在使用request.site,现在wagtail 2.9使用Site._find_for_request(request)
我如何更改当前代码以与最新版本的w一起使用?在此先感谢
@register.simple_tag(takes_context=True)
def og_image(上下文,页面):
protocol = re.compile(r'^(\w[\w\.\-\+]*:)*//')
if protocol.match(settings.MEDIA_URL):
base_url = ''
else:
base_url = context['request'].site.root_url
if page:
if page.og_image:
return base_url + page.og_image.get_rendition('original').url
elif page.cover_image:
return base_url + page.cover_image.get_rendition('original').url
if LayoutSettings.for_site(context['request'].site).logo:
layout_settings = LayoutSettings.for_site(context['request'].site)
return base_url + layout_settings.logo.get_rendition('original').url
return None
在这种情况下,您似乎仍在使用获取当前网站的旧方法:
context['request'].site
其中context['request']
是请求对象。按照Wagtail 2.9 release notes中的建议将这些出现更改为以下内容:
Site.find_for_request(context['request'])
[不要忘记确保文件顶部有from wagtail.core.models import Site
,否则您的代码将无法工作,即出现错误。
您可以在Site.find_for_request
中找到有关docs的更多信息。