在django下正确使用markdown实现代码高亮

最近自己在做一个个人博客,做到markdown的时候折腾了两三个小时,网上大部分教程已经失效了或者没有讲清楚。首先在Django下使用markdown目前有两种方法,一种是用python的markdown库将需要的内容转换成html后插入页面,另一种是使用django内置的markdown-deux插件。一开始装的内置插件,后来发现后一种不支持```开头的代码块,所以最后我选择了第一种。

如果只是显示代码块,直接用markdown翻译后的内容插入页面就可以了,但是这样子的话所有的代码都显示在pre和code标签里面没有高亮看不出层次,如果需要高亮的话还需要开启markdown.extensions.codehilite插件,而这个插件的正确工作需要下载Pygments

apt-get install python3-pygments

pygments可以提供一个类似词法解析器的东西,将代码块中的关键词都找出来并显示在不同的class中。
在extensions.codehilite工作过程中会import这个库,如果电脑上没有就只会返回给你一整块代码了
然后对不同的class用不同的css样式,就达到了语法高亮的功能。
markdown
而网上一般的教程都没有提到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即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值