markdown语法
markdown语法参考:https://help.coding.net/docs/management/markdown.html#pageTitle
安装
pip install markdown
修改视图层
markdown.markdown语法接收两个参数:第一个参数是需要渲染的文章正文article.body;第二个参数载入了常用的语法扩展,markdown.extensions.extra中包括了缩写、表格等扩展,markdown.extensions.codehilite则是代码高亮扩展。
import markdowndef article_detail(request, article_id):"""文章详情"""article = ArticlePost.objects.get(id=article_id) # 取出相应的博客文章article.body = markdown.markdown(article.body, extensions=['markdown.extensions.extra', # 包含 缩写、表格等常用扩展'markdown.extensions.codehilite', # 语法高亮扩展])context = {"article": article}return render(request, 'article/detail.html', context)
修改html文件
Django出于安全的考虑,会将输出的HTML代码进行转义,这使得article.body中渲染的HTML文本无法正常显示。管道符|是Django中过滤器的写法,而|safe就类似给article.body贴了一个标签,表示这一段字符不需要进行转义了
{% extends 'base.html' %}{% load static %}{% block title %}文章详情{% endblock title %}{% block content %}<div class="container"><div class="row"><!--标题&作者--><h1 class="col-12 mt-4 mb-4">{{ article.title }}</h1><div class="col-12 alert alert-success">作者:{{ article.author }}</div><!--正文--><div class="col-12"><!--给article.body贴了一个标签,表示这一段字符不需要进行转义--><p>{{ article.body|safe }}</p></div></div></div>{% endblock content %}
代码高亮
在static目录中新建一个目录md_css/,一会儿放置代码高亮的样式文件。
进入虚拟环境,安装Pygments:pip install Pygments。
在命令行中进入刚才新建的md_css目录中,输入Pygments指令。
pygmentize -S monokai -f html -a .codehilite > monokai.css
效果图如下:
更多样式请参考:https://github.com/richleland/pygments-css
