在 WagTail 中,如何为嵌入在富文本中的文档链接显示完整文档 url?

In WagTail, how do you display a full document url for document links embedded in richtext?

我正在建立一个 wagtail 网站,它需要将所有链接显示为完整的 url,因为这些页面也将用作电子邮件模板。

Wagtail 版本 2.5.1

我的主要问题是嵌入在 RichTextFields 中的文档链接。当前的解决方法是在他们上传文档后将它们作为外部链接插入。

我看过 features.register_link_handler 但不清楚如何处理文档链接。我假设它需要以某种方式在 wagtail_hooks.py register_rich_text_features 中。

我最终在 wagtail_hooks.py

中为此创建了一个 register_rich_text_features link 处理程序

class DocumentFullLinkHandler(DocumentLinkHandler):

@classmethod
def expand_db_attributes(cls, attrs):
    try:
        document = cls.get_instance(attrs)
        current_site = Site.objects.get_current()

        document_url = (
            document.url 
            if document.url.startswith(settings.PATH_PREFIX)
            else f"{settings.PATH_PREFIX}{document.url}"
        )
        full_url = f"https://{current_site.domain}{document_url}"
        return f'<a href="{escape(full_url)}">'
    except (ObjectDoesNotExist, KeyError):
        return "<a>" 

@sw12k 我尝试应用与您相同的解决方案,但我没能成功,但是...我想我找到了一个更简单的解决方案,它确实成功了。

在 html 模板中,当您渲染 RichTextField 时,我从:

{{ page.description|safe }}

对此:

{{ page.description|richtext }}

现在文档链接格式正确,下载链接也能正常工作。

希望对您有所帮助。

真正的答案是升级到 Wagtail 2.7 然后设置

WAGTAILDOCS_SERVE_METHOD = "direct" 在设置里。

这将提供使用远程存储时的直接文件。