呓语 | 杨英明的个人博客

专注于c++、Python,欢迎交流

By

Django-markdownx 修改默认渲染引擎,支持GFM的```代码块识别

Django-markdownx 是一款django的插件,它用于markdown文档的编写,简单来说,它是一款网页端的markdown编辑器。

Markdownx用起来虽然不错,但是他在一些方面还是有些限制,比如说我想让他支持```代码块识别

为什么这么说呢?

因为markdown编辑器的预览效果是使用python-markdown来渲染的,而python-markdown默认支持标准的markdown语法,标准语法里代码块需要每行前空4个空格才能识别。
这可要费老劲了,你想想,每次要编辑代码块的时候,需要首先在本地编辑器上选中,手动按下tab,然后复制到markdownx上,反人类。

于是我选择 python-markdown2 ,它是python-markdown的升级版,支持GFM式(GFM 是 Github 拓展的基于 Markdown 的一种纯文本的书写格式)的markdown书写格式。允许我使用```包裹代码块。

那么如何修改django-markdownx的默认渲染引擎呢?

下面就要修改代码了,我们需要直接修改django-markdownx的源代码。

  1. 首先你要安装 python-markdown2 ,你可以用pip安装,也可以在django中第三方库管理中点“+”安装,这里不赘述。

  2. 找到你的django-markdownx安装位置中的utils.py文件,我的文件路径是 D:\workspace\github\MingBlog\blog_venv\Lib\site-packages\markdownx\utils.py (我在virtualenv虚拟环境中安装的)

  3. 编辑utils.py,修改markdownify函数,添加第三方库。
    原来是这样的:

import markdown
from PIL import Image
from .settings import MARKDOWNX_MARKDOWN_EXTENSIONS, MARKDOWNX_MARKDOWN_EXTENSION_CONFIGS

def markdownify(content):
    return markdown.markdown(
                        content,
                        extensions=MARKDOWNX_MARKDOWN_EXTENSIONS,
                        extension_configs=MARKDOWNX_MARKDOWN_EXTENSION_CONFIGS
    )

修改成这样:

import markdown2
from PIL import Image
from .settings import MARKDOWNX_MARKDOWN_EXTENSIONS, MARKDOWNX_MARKDOWN_EXTENSION_CONFIGS

def markdownify(content):
    return markdown2.markdown(
        content,extras=MARKDOWNX_MARKDOWN_EXTENSIONS
    )

ok,大功告成,去markdownx中看看是不是可以识别```代码块了呢?

原创声明

转载请注明:呓语 » Django-markdownx 修改默认渲染引擎,支持GFM的```代码块识别