【问题标题】:Markdown converts embed/iframe HTML into non-usable HTMLMarkdown 将嵌入/iframe HTML 转换为不可用的 HTML
【发布时间】:2020-10-08 20:13:39
【问题描述】:

这个:

<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>

使嵌入标签不可用。有没有办法阻止这种情况发生? 使用 iframe 标记时也会发生同样的情况。我希望页面“example.com”被渲染。

我在项目中使用 Django,并显示以下标记:

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

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

我使用的Markdown的版本是3.2。

【问题讨论】:

  • 它对我来说工作得很好,无论是使用命令行界面还是编程界面。请edit您的问题向我们展示您是如何尝试转换文件的。
  • @Chris 我现在已经编辑了问题以包含显示降价的代码,但是,没有什么要添加的了。 Django 是系统使用的框架,添加的额外代码是显示信息的内容
  • 啊,你之前没有提到 Django。 page.text 有什么价值?是整个embed 标签吗?你为什么使用the escape filter?它的全部意义在于转义 HTML,例如将&amp;lt; 转换为&amp;lt;,如果您使用safe 过滤器,这没有多大意义。
  • 如果这个问题被重新打开,我会添加一个正确的答案,但这个☝️就是问题所在。
  • @Chris 这就是答案,谢谢

标签: python html django markdown


【解决方案1】:

我在项目中使用 Django,并显示以下标记:

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

假设page.text 包含您在问题中显示的&lt;embed&gt;,那么您的问题是您对the escape filter 的使用。

它的工作是转义 HTML 代码,包括将&amp;lt; 转换为&amp;lt;&amp;gt; 转换为&amp;gt;,如您所见。一旦进行了转换,markdownsafe 过滤器都不会将其改回。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 2012-05-31
    • 2016-01-19
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多