w 2.9中如何从request.site更改为Site._find_for_request(request)

问题描述 投票:0回答:1

我最近将我的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
django wagtail
1个回答
0
投票

在这种情况下,您似乎仍在使用获取当前网站的旧方法:

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的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.