我正在使用 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
如果您在“设置”->“站点”下没有设置站点记录,或者您要链接的页面存在于页面树中未被任何站点记录覆盖的某个位置,就会发生这种情况。
如果您有类似的网站结构
Home
|
|- Blog
| |- First blog post
| |- Second blog post
|
|- People
|- Alice
|- Bob
然后需要有一个根页面为“Home”的站点记录。这有两个目的:
/people/alice/
这样的 URL 的请求时,它会提供定位该页面的起点 - 查找名为“people”的子项,然后查找名为“alice”的子项/people/alice/
而不是 /alice/
或 /home/people/alice/
由于您正在使用
get_api_representation
,您可能正在构建一个“无头”网站,其中 Wagtail 不负责提供页面,因此第 1 点不适用 - 但您仍然依赖 Wagtail 返回链接页面的 URL,因此您仍然需要第 2 点的站点记录。