在Django中显示没有markdown语法的文本

时间:2014-02-10 21:39:20

标签: python django markdown

是否可以只使用Django显示没有markdown语法的文本?

如果用户添加了一些带有markdown语法的文字,并且我没有在我的模板中调用markdown({{some_text}}),我会得到类似这样的内容:

**this is a test** _with markdown_ `syntax`

我想要显示的是纯文本:

this is a test with markdown syntax 

2 个答案:

答案 0 :(得分:2)

正如Markdown的documentation所述:

  

Markdown为以下字符提供反斜杠转义符:

\   backslash
`   backtick
*   asterisk
_   underscore
{}  curly braces
[]  square brackets
()  parentheses
#   hash mark
+   plus sign
-   minus sign (hyphen)
.   dot
!   exclamation mark

您可以编写一个模板标记,只要它们前面没有反斜杠转义符,就会删除这些字符中的任何一个(并且只在它们出现时才删除反斜杠)。

然而,Markdown并不总是赋予这些角色特殊的意义。例如:

  

Markdown会忽略这些(括号)。

     

然而[这些](不是)因为它们是链接的一部分。

换句话说,有时您可能想要删除上面的字符列表,但有时您可能不会。最后,您可能会发现自己正在重新实现降价解析器。不妨使用已经存在的那个,然后简单地通过Django的内置striptags过滤器传递html。或者,如果您想维护块级别标记并且只删除一小部分(内联)标记,removetags过滤器可能会为您提供更好的服务。

在任何一种情况下,您都不需要编写任何Python代码,因为您可以将一些现有的过滤器串在一起。

{{ value|markdown|striptags }}

答案 1 :(得分:0)

创建模板过滤器以删除这些字符。例如,将markdown转换为html,然后应用striptags。