我同意Henrik的评论.从降价文档:
当您确实想要
<br />使用Markdown 插入break标记时,您将结束包含两个或更多空格的行,然后键入return.是的,这需要更多的努力来创建一个
<br />,但是一个简单的"每个换行是一个<br />"规则对Markdown不起作用.当您使用硬中断格式化时,Markdown的电子邮件风格的区块报价和多段列表项目效果最好 - 看起来更好.
您是否看过其他Django标记选项,纺织品和重组文本?他们的语法可能更适合你.
粗略且准备好的方法是将markdown和linebreaksbr过滤器链接起来.
{{ value|markdown|linebreaksbr }}
Run Code Online (Sandbox Code Playgroud)
这将运行降价过滤器,然后运行替换\n为的linebreaksbr过滤器<br />.你可能最终会有太多的换行符,但这对你来说可能比太少更好.
如果你是一个比这更好的解决方案,你可以
写一个自定义过滤器,正如约翰在他的回答中所说.
深入了解Django使用的python-markdown库,并编写一个实现所需换行语法的扩展.然后,您将使用带过滤器的扩展名
{{ value|markdown:"linebreakextension" }}
编辑:截至2011年6月底,下面的扩展现在包含在Python Markdown中.
这是我写的Markdown扩展程序,目前正在我的网站上测试,以完全按照您的要求执行操作:
"""
A python-markdown extension to treat newlines as hard breaks; like
StackOverflow and GitHub flavored Markdown do.
"""
import markdown
BR_RE = r'\n'
class Nl2BrExtension(markdown.Extension):
def extendMarkdown(self, md, md_globals):
br_tag = markdown.inlinepatterns.SubstituteTagPattern(BR_RE, 'br')
md.inlinePatterns.add('nl', br_tag, '_end')
def makeExtension(configs=None):
return Nl2BrExtension(configs)
Run Code Online (Sandbox Code Playgroud)
我把它放在一个名为mdx_nl2br.py的文件中,并把它放在我的PYTHONPATH上.然后,您可以在Django模板中使用它,如下所示:
{{ value|markdown:"nl2br" }}
Run Code Online (Sandbox Code Playgroud)
如果您想在常规代码中使用它,您可以执行以下操作:
import markdown
md = markdown.Markdown(safe_mode=True, extensions=['nl2br'])
converted_text = md.convert(text)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4810 次 |
| 最近记录: |