为什么 Markdown 在 Django 1.5+ 中被弃用?

Why was markdown deprecated in Django 1.5+?

我一直在计划对网站的很多静态内容使用 markdown。

考虑到 Python 的 markdown 模块,这很容易做到,但我注意到 Django 曾经有内置的 markdown 支持,但在 1.5 版中已弃用。我认为这是有充分理由的,如果这是一个坏主意,我没有兴趣自己走同样的路。

在 Django 中弃用内置降价支持的原因是什么,这些原因是否仍然适用于 Django 1.9+ 中对降价的一般使用?

首先,不仅删除了 Markdown 支持,还删除了 contrib.markup 库。该库包含 Markdown、reStructeredText 和 Textile 的模板过滤器。因此,更准确的说法是删除了所有轻量级标记语言过滤器。我记得,这有多种原因:

  • 当时正在努力将许多 "contrib" 软件包分解为第三方应用程序。 contrib.markup 就是这样一个包。一些普遍的原因是它们不是框架使用的核心功能,它们没有经过充分测试,或者它们的文档记录不充分,等等。
  • 轻量级标记语言库是移动的目标。由于比 Django 小得多,它们可以在更短的发布周期内发布,而 Django 需要很长时间才能 "catch up." 然后每种语言的发布周期都与下一种不同。每种语言都由自己的第三方 Django 应用程序支持更有意义,它始终可以 "current" 带有标记语言库。
  • "contrib" 应用仅提供模板过滤器。但是,在 Django 中还有其他方式支持标记语言(数据库字段、表单字段等)。一些第三方库实际上已经包含了这些功能以获得更完整的支持。
  • 当不受信任的用户被允许 post 标记到您的网站(如评论)时,存在一些安全问题(主要是 XSS)。虽然可以采取一些措施来减轻此类担忧,但 Django 开发人员不想承担额外的工作来保证安全的解决方案。请注意,当只有受信任的经过身份验证的用户提供内容时,此类问题不存在(有关安全问题的解释,请参阅此 article)。

来源: