Django引入markdown

使用Markdown增加文章

一、安装Markdown

pip install markdown

markdown简单语法介绍: markdown知识学习

二、使用Markdown

将Markdown的语言渲染成HTML语言

article/views.py

import markdown
...
...
...
def article_detail(request, id):
    article = get_object_or_404(Article, pk=id)
    # 将markdown语法渲染成html样式
    article.art_body = markdown.markdown(article.art_body,
                        extensions=[
                        # 包含 缩写、表格等常用扩展
                        'markdown.extensions.extra',
                        # 语法高亮扩展
                        'markdown.extensions.codehilite',
                        ])
    context = {
    'article': article
    }
return render(request, 'article_datail.html', context)
  • 在文章详情页面增加article.art_body

  • 代码中markdown.markdown语法接收两个参数:

第一个参数是需要渲染的文章正文article.body; 第二个参数载入了常用的语法扩展,markdown.extensions.extra中包括了缩写、表格等扩展, markdown.extensions.codehilite则是后面要使用的代码高亮扩展。

修改展示层(Templates)部 templates/article_datail.html

         <!-- 文章正文 -->
        <div class="col-12">
            <p>{{ article.art_body|safe }}</p>
        </div>

在文章正文后加入过滤器safe,django提供了safe 过滤器,防止页面是乱码。

运行程序,新增加一篇文章,使用Markdown语法,就可以看到文章已经被渲染了。 

为了美观,我们将代码进行高亮

Markdown高亮

  • 一、在static目录中新建一个目录md_css/,放置样式文件。

  • 二、安装Pygments:pip install Pygments

  • 三、在md_css目录下运行pygmentize -S monokai -f html -a .codehilite > monokai.css

运行结束后,md_css目录中自动生成了monokai.css的文件。

  • 四、在文章详情页面引入此css、

    <!-- 引入monikai.css -->    
    <link rel="stylesheet" href="{% static 'md_css/monokai.css' %}">

运行本地服务器,清除缓存刷新页面。即: 


可能出现的问题:

  1. 代码颜色单一

出现这样的情况,是因为你的Markdown语法不严谨,需要标明语言,即:

python
def&nbsp;article_detail(request,&nbsp;id):
&nbsp;&nbsp;&nbsp;&nbsp;article&nbsp;=&nbsp;get_object_or_404(Article,&nbsp;pk=id)
这样声明语言




上一篇: Django搭建个人博客---增加文章
下一篇: Django搭建博客----删除文章