最近自己在做一个个人博客,做到markdown的时候折腾了两三个小时,网上大部分教程已经失效了或者没有讲清楚。首先在Django下使用markdown目前有两种方法,一种是用python的markdown库将需要的内容转换成html后插入页面,另一种是使用django内置的markdown-deux插件。一开始装的内置插件,后来发现后一种不支持```开头的代码块,所以最后我选择了第一种。
如果只是显示代码块,直接用markdown翻译后的内容插入页面就可以了,但是这样子的话所有的代码都显示在pre和code标签里面没有高亮看不出层次,如果需要高亮的话还需要开启markdown.extensions.codehilite插件,而这个插件的正确工作需要下载Pygments
apt-get install python3-pygments
1
pygments可以提供一个类似词法解析器的东西,将代码块中的关键词都找出来并显示在不同的class中。
在extensions.codehilite工作过程中会import这个库,如果电脑上没有就只会返回给你一整块代码了
然后对不同的class用不同的css样式,就达到了语法高亮的功能。
而网上一般的教程都没有提到pygments的功能。具体使用教程可以上网搜一下其他实现。
https://www.jianshu.com/p/898ac2bd41e8
后记,19.5.29
最后打算把博客移到wordpress上,又遇到了这个问题,其实仔细想想,语法高亮这个问题一共两种解法,反正肯定是要做词法解析的,区别是词法解析是在后端做还是在前端做
1.后端用python的markdown库来解决token的标签问题,在前端引用css渲染
2.前端用js做code标签的词法解析,如引入prism.js。我觉得这种方法的拓展性更强,毕竟后端可能更改。
http://www.95408.com/blog/3415.html
保持兼容性的最佳解决方案,后端使用editor.md这个md编辑器插件,前端使用prims.js即可
原文:https://blog.csdn.net/kekefen01/article/details/84898493
版权声明:本文为博主原创文章,转载请附上博文链接!
网友评论