Django中解析markdown文本并使用pygments实现代码高亮

python版本:3.5.1;

django版本:1.9.5;

获取版本:

localhost:css$ python3
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 9, 5, 'final', 0)

1. 安装插件

这里需要用到的有两个插件

localhost:css$ pip install markdown pygments

# or

localhost:css$ easy_install install markdown pygments

2. markdown

具体内容参考python-markdown官网地址

最简单的应用就是:

import markdown
html = markdown.markdown(your_text_string)  # so easy

但是需要在django中使用下面的方法实现:

2.1 使用templatetags

在app目录下增加一个templatetags文件夹,并增加两个文件

localhost:blog$ mkdir templatetags
localhost:blog$ cd templatetags
localhost:templatetags$ touch __init__.py
localhost:templatetags$ touch custom_markdown.py  # 随意名字

修改custom_markdown.py这个文件

import markdown
from django import template
from django.template.defaultfilters import stringfilter
from django.utils.safestring import mark_safe

register = template.Library()  # 自定义filter时必须加上
@register.filter(is_safe=True)  # 注册template filter
@stringfilter  # 希望字符串作为参数
def custom_markdown(value):
    return mark_safe(markdown.markdown(
           value,
           extensions=['markdown.extensions.fenced_code',   # 解析代码块
                  'markdown.extensions.codehilite',    # codehilite即为代码高亮准备
                  # 'markdown.extensions.table',    # 解析表格
                  # 'markdown.extensions.toc',    # 解析目录TOC

], 
           safe_mode=True,
           enable_attributes=False))

2.2 在template中使用

在模板文件中增加:

...
{% load custom_markdown %}  # 加载tag文件
...
{{ articles.content | custom_markdown  }}  # 使用函数

content中一部分markdown文本作为例子,如下所示:
python # 4 写第一个view 在polls/views下写一个最简单的view:python
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")

查看markdown编写的内容已经被解析了。但是代码没有高亮。
如下图:

866969-20170228212542063-1722673023.png

3. pygments

使用pyments创建一个css文件,放到django的static文件目录中,让它能够给页面中的代码进行渲染即可。
具体内容参见Pygments.

3.1 创建css

一步:

localhost:css$ pygmentize -S xcode -f html -a .codehilite > code.css

当然,可以选择其他的style,替换xcode即可。风格有下面这些。

>>> from pygments.styles import STYLE_MAP
>>> STYLE_MAP.keys()
dict_keys(['perldoc', 'vs', 'fruity', 'borland', 'monokai', 'xcode', 'autumn', 'algol_nu', 'abap', 'paraiso-dark', 'rainbow_dash', 'murphy', 'emacs', 'manni', 'pastie', 'bw', 'arduino', 'lovelace', 'native', 'algol', 'trac', 'friendly', 'paraiso-light', 'vim', 'colorful', 'tango', 'igor', 'rrt', 'default'])

3.2 使用

在模板头部增加:

# 确保路径正确
<link type="text/css" rel="stylesheet" href="<css_file_path>/code.css"/>

可以了。如下图:

866969-20170228212553641-1096012202.png

转载于:https://www.cnblogs.com/felo/p/6480976.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值