gpt4 book ai didi

wagtail - 创建自定义 Wagtail OEmbedFinder

转载 作者:行者123 更新时间:2023-12-05 02:13:48 24 4
gpt4 key购买 nike

我正在关注 the documentation还有this example在我的 Wagtail 站点中创建自定义 OEmbed Finder。 (最终我想修改 YouTube 视频的 HTML 输出以使用 youtube-nocookie.com 域,而不是 youtube.com。)

我在 myapp.embeds.finders.oembed.py 中创建了这个:

from wagtail.embeds.finders.oembed import OEmbedFinder

class YouTubeOEmbedFinder(OEmbedFinder):

def find_embed(self, url, max_width=None):
embed = super().find_embed(url, max_width)

# Just to see that it's doing something:
embed['html'] = '<p>Hello</p>'

return embed

并在我的设置中添加了这个:

from wagtail.embeds.oembed_providers import youtube

WAGTAILEMBEDS_FINDERS = [
{
'class': 'myapp.embeds.finders.oembed.YouTubeOEmbedFinder',
'providers': [youtube],
},
{
# Handles all other oEmbed providers the default way
'class': 'wagtail.embeds.finders.oembed',
},
]

但没有什么不同 - 标准的 YouTube 嵌入在已发布的页面中。据我所知,我的 find_embed() 方法从未被调用过。我一定是犯了一些愚蠢的错误,但我很难过。

最佳答案

调试变得更加困难,因为我没有意识到一件事:当您重新保存或发布使用它们的页面时,并不总是重新生成嵌入,包括它们的 HTML。它们只有在 URL 更改时才会重新生成。这就是我的 find_embed() 方法从未被调用的原因;因为我只是重新发布页面,没有更改嵌入中使用的 URL。

一旦我意识到这一点,我尝试做的事情的解决方案就很简单了。

在我的 settings.py 中:

from wagtail.embeds.oembed_providers import youtube

WAGTAILEMBEDS_FINDERS = [
{
'class': 'myapp.embeds.finders.oembed.YouTubeOEmbedFinder',
'providers': [youtube],
},
{
# Handles all other oEmbed providers the default way
'class': 'wagtail.embeds.finders.oembed',
},
]

然后在 myapp/embeds/finders/oembed.py 中:

from wagtail.embeds.finders.oembed import OEmbedFinder

class YouTubeOEmbedFinder(OEmbedFinder):
"""
Ensures that all YouTube embeds use the youtube-nocookie.com domain
instead of youtube.com.
"""

def find_embed(self, url, max_width=None):
embed = super().find_embed(url, max_width)

embed['html'] = embed['html'].replace(
'youtube.com/embed',
'youtube-nocookie.com/embed')
return embed

那只是更改我所有现有 YouTube 嵌入的 URL(例如,通过将 ?v=2 添加到它们的 URL 的末尾)然后重新-发布页面。

关于wagtail - 创建自定义 Wagtail OEmbedFinder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54556736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com