Django将markdown转HTML,a标签自定义属性
Django将markdown转HTML,a标签自定义属性
Django中使用将markdown文档转为HTML,如何给a标签设置target="_blank"
markdown.markdown(obj.body,
extensions=[
'markdown.extensions.extra',
'markdown.extensions.codehilite',
'markdown.extensions.toc',
])
要在Django中将Markdown文档转换为HTML并为 a标签设置 target="_blank",你可以使用自定义Markdown扩展来实现这一点。以下是一个示例扩展,它将 a标签中的target属性设置为"_blank":
首先,创建一个名为markdown_extensions.py的Python文件,并在其中添加以下代码:
from markdown import Extension
from markdown.treeprocessors import Treeprocessor
from markdown.util import etree
class TargetBlankExtension(Extension):
def extendMarkdown(self, md):
md.registerExtension(self)
self.processor = TargetBlankProcessor()
md.treeprocessors.register(self.processor, 'target_blank', 15)
class TargetBlankProcessor(Treeprocessor):
def run(self, root):
for el in root.iter('a'):
el.set('target', '_blank')
def makeExtension(**kwargs):
return TargetBlankExtension(**kwargs)
然后,在你的Django项目中的某个适当位置,将上面的扩展导入到你的视图或模型中,并将其应用于Markdown文本:
import markdown
from .markdown_extensions import TargetBlankExtension # 导入自定义扩展
# 在需要使用Markdown的地方
markdown_text = """
[示例链接](https://example.com)
"""
# 创建Markdown实例并应用扩展
md = markdown.Markdown(extensions=[
'markdown.extensions.extra',
'markdown.extensions.codehilite',
'markdown.extensions.toc',
TargetBlankExtension(), # 使用自定义扩展
])
html_content = md.convert(markdown_text)
上述代码中,我们首先导入了自定义扩展TargetBlankExtension,然后在Markdown实例的扩展列表中包括它。这将确保在将Markdown文本转换为HTML时,链接的target属性将设置为"_blank",以在新标签页中打开链接。
更新:2023-11-27
评论区