文章目錄

Django后台添加markdown编辑器中说过如何在Django后台添加markdown编辑器,后来发现这里添加的pagedown有一个问题,也就是换行问题。在markdown中,单个换行会用空格代替,但pagedown中并没有这么做。经过跟踪,发现问题是在pagedown-extra中,解决的办法是在pagedown/Markdown.Converter.js的_FormParagraphs函数1168行//if this is an HTML marker, copy it前添加str = str.replace(/\n/g, " ");即可.

如此,在后台添加markdown编辑器就完成了。之后还需要前台现实时也用markdown渲染,通过自定义filter,添加markdown渲染可以实现这个功能。

  • pip install markdown安装markdown

  • 按照自定义模版标签和过滤器, 在所在的app目录下新建templatetags目录,在templatetags目录里新建__init__.py文件,之后编写my_markdown.py文件,内容如下:

    1
    2
    3
    4
    5
    6
    from django import template
    from markdown import markdown
    register = template.Library()
    @register.filter(name='mark')
    def mark(value):
    return markdown(value, extensions=['markdown.extensions.extra', 'markdown.extensions.codehilite'])
  • 在模版中使用

    1
    2
    {% load my_markdown %}
    <p>{{ post.content|mark|safe}}</p>

打赏作者

文章目錄