markdown语法

markdown语法参考:https://help.coding.net/docs/management/markdown.html#pageTitle

安装

  1. pip install markdown

修改视图层

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

  1. import markdown
  2. def article_detail(request, article_id):
  3. """文章详情"""
  4. article = ArticlePost.objects.get(id=article_id) # 取出相应的博客文章
  5. article.body = markdown.markdown(
  6. article.body, extensions=[
  7. 'markdown.extensions.extra', # 包含 缩写、表格等常用扩展
  8. 'markdown.extensions.codehilite', # 语法高亮扩展
  9. ])
  10. context = {"article": article}
  11. return render(request, 'article/detail.html', context)

修改html文件

Django出于安全的考虑,会将输出的HTML代码进行转义,这使得article.body中渲染的HTML文本无法正常显示。管道符|是Django中过滤器的写法,而|safe就类似给article.body贴了一个标签,表示这一段字符不需要进行转义了

  1. {% extends 'base.html' %}
  2. {% load static %}
  3. {% block title %}文章详情{% endblock title %}
  4. {% block content %}
  5. <div class="container">
  6. <div class="row">
  7. <!--标题&作者-->
  8. <h1 class="col-12 mt-4 mb-4">{{ article.title }}</h1>
  9. <div class="col-12 alert alert-success">作者:{{ article.author }}</div>
  10. <!--正文-->
  11. <div class="col-12">
  12. <!--给article.body贴了一个标签,表示这一段字符不需要进行转义-->
  13. <p>{{ article.body|safe }}</p>
  14. </div>
  15. </div>
  16. </div>
  17. {% endblock content %}

代码高亮

static目录中新建一个目录md_css/,一会儿放置代码高亮的样式文件。
进入虚拟环境,安装Pygmentspip install Pygments。
在命令行中进入刚才新建的md_css目录中,输入Pygments指令。

  1. pygmentize -S monokai -f html -a .codehilite > monokai.css

效果图如下:
image.png
更多样式请参考:https://github.com/richleland/pygments-css

原文参考:https://www.dusaiphoto.com/article/20/