python django 新增markdown格式
阿新 • • 發佈:2019-01-02
使用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裡引用到文章的頁面即可。