是否可以只使用Django显示没有markdown语法的文本?
如果用户添加了一些带有markdown
语法的文字,并且我没有在我的模板中调用markdown({{some_text}}),我会得到类似这样的内容:
**this is a test** _with markdown_ `syntax`
我想要显示的是纯文本:
this is a test with markdown syntax
答案 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。