python django 添加markdown格式

使用django model的text格式去写blog会有很多局限的地方,所以添加markdown去展示会方便很多。

当时使用的django_markdown,过滤的时候对代码解析有问题,然后找了资料实现了,纪录下。

在app层新建一个templatetags目录,添加以下内容的文件,姑且叫custom_markdown.py

from django import template                                                         
from django.template.defaultfilters import stringfilter                             
from django.utils.encoding import force_text                                        
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'],                              
        safe_mode=True,                                                             
        enable_attributes=False))                                                                                                                                                                     


路由需要加上markdown的路径

url(r'^markdown/', include('django_markdown.urls')),                            

对应模版层引用:

{% extends "base.html" %}                                                                                                                                     
{% load custom_markdown %}
 
{% block custom_styles %}
<link href="/static/blog/css/monokai.css" rel="stylesheet"> #对markdown做高亮处理
{% endblock %}
 
{% block title %}
{{ article.title }}
{% endblock title %}
 
 
{% block content %}
<h1>{{ article.title }}</h1>
<div id="main">
    {{ article.content | custom_markdown }}
</div>

但是markdown本身并没有自带高亮,所以看起来还是有点丑的,需要去加css文件对markdown代码做高亮处理

这里有一个开源markdown的css库:pygments-css

随便挑一个将其保存在static里引用到文章的页面即可。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值