Как перейти с request.site на Site._find_for_request (request) в трясогузке 2.9 - PullRequest
0 голосов
/ 30 мая 2020

Я недавно обновил свое приложение трясогузки до последней версии, версии 2.9, теперь, поскольку промежуточное программное обеспечение сайта трясогузки устарело, у меня проблемы с тем, чтобы мой сайт заработал. Я использовал request.site, теперь трясогузка 2.9 использует Site._find_for_request (request)

Как мне изменить мой текущий код, чтобы он работал с последней версией трясогузки? Заранее спасибо

@register.simple_tag(takes_context=True)

def og_image (context, page):

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

1 Ответ

3 голосов
/ 30 мая 2020

Похоже, что вы все еще используете старый способ получения текущего сайта, в данном случае:

context['request'].site

где context['request'] - объект запроса. Измените эти вхождения на ниже, как рекомендовано в примечаниях к выпуску Wagtail 2.9 :

Site.find_for_request(context['request'])

Не забудьте убедиться, что у вас есть from wagtail.core.models import Site где-то в верхней части файла, иначе ваш код не будет работать, т.е. вы получите сообщение об ошибке.

Дополнительную информацию о Site.find_for_request можно найти в docs .

...