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 markdown
def 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