Wagtail RichTextEditor 中的内部链接问题

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

我正在使用 Wagtail RichTextEditor,它有一个添加链接的选项。使用此链接选项,我可以上传内部和外部链接。当我添加外部链接时,它工作正常。但是,当我尝试添加内部链接并发布页面时,该链接显示为损坏的链接符号。此外,在 API 中,href 属性显示为 None。 以前有人遇到过这个问题吗?我该如何解决?

我的代码是这样的:

class CustomizeRichTextBlock(RichTextBlock):
    def __init__(self, **kwargs):
        super().__init__(features=[
            'h1', 'h2', 'h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 
            'link', 'image', 'blockquote', 'mark', 'embed', 'code', 'superscript', 
            'subscript', 'strikethrough','text-alignment','underline'
        ], **kwargs)

    def add_link_style(self, html_content):
        # Add the `style` attribute to all <a> tags
        styled_content = re.sub(r'<a ', r'<a style="color: #2FC1D4;" ', html_content)
        return styled_content    
        

    def get_api_representation(self, value, context=None) -> str:
        # Generate the initial HTML content from rich text
        html_content = expand_db_html(value.source)
        
        # Add custom link styling
        styled_content = self.add_link_style(html_content)

         # Replace empty paragraphs with a unique placeholder for line breaks
        styled_content = re.sub(r'<p[^>]*>\s*</p>',r'<p><br /></p>', styled_content)

        # Return the final content
        return styled_content
     
python wagtail
1个回答
0
投票

如果您在“设置”->“站点”下没有设置站点记录,或者您要链接的页面存在于页面树中未被任何站点记录覆盖的某个位置,就会发生这种情况。

如果您有类似的网站结构

Home
|
|- Blog
|  |- First blog post
|  |- Second blog post
|
|- People
   |- Alice
   |- Bob

然后需要有一个根页面为“Home”的站点记录。这有两个目的:

  1. 当收到像
    /people/alice/
    这样的 URL 的请求时,它会提供定位该页面的起点 - 查找名为“people”的子项,然后查找名为“alice”的子项
  2. 输出给定页面的 URL 时,路径是相对于该根页面计算的 - 所以它是
    /people/alice/
    而不是
    /alice/
    /home/people/alice/

由于您正在使用

get_api_representation
,您可能正在构建一个“无头”网站,其中 Wagtail 不负责提供页面,因此第 1 点不适用 - 但您仍然依赖 Wagtail 返回链接页面的 URL,因此您仍然需要第 2 点的站点记录。

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