python django 添加markdown格式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hexiaodouaipiqiu/article/details/52905087

使用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里引用到文章的页面即可。


展开阅读全文

没有更多推荐了,返回首页