Markdown将嵌入/ iframe HTML转换为不可用的HTML

时间:2020-06-18 17:13:07

标签: python html django markdown

此:

<embed type="text/html" src="https://example.com/" width="100%" height="100%">

转换为此(在页面上呈现时):

<p> &lt;embed type="text/html" src="https://example.com/" width="100%" height="100%"&gt; </p>

使embed标签不可用。有什么办法可以阻止这种情况的发生? 使用iframe广告代码时也会发生同样的情况。我希望页面“ example.com”能够呈现。

我将Django用于该项目,并显示以下内容:

{{ page.text | escape | markdown | safe }}

page.text是保存文本的变量。

我使用的Markdown的版本是3.2。

1 个答案:

答案 0 :(得分:0)

我将Django用于该项目,并显示以下内容:

{{ page.text | escape | markdown | safe }}

假设page.text包含您在问题中显示的<embed>,那么您的问题是您使用the escape filter

它的工作是转义HTML代码,其中包括将<转换为&lt;,并将>转换为&gt;。完成转换后,markdownsafe过滤器都不会将其改回。

先使用escape然后再使用safe并没有多大意义,因为safe只是防止自动转义。

正确的解决方案取决于page.text的来源。如果您信任该来源,则可以从模板中删除escape请注意,这确实为恶意用户或意外滥用(例如,由cross-site scripting

如果您不信任来源,则有两个主要选择:

相关问题