一、markdown
-
安裝markdown2
pip install markdown2
-
應用markdown2
進入blog APP,創建templatetags文件夾,在文件夾內創建__init__.py,custom_markdown.py
-
修改custom_markdown.py
import markdown2 from django import template from django.template.defaultfilters import stringfilter from django.utils.encoding import force_unicode from django.utils.safestring import mark_safe register = template.Library() @register.filter(is_safe=True) @stringfilter def custom_markdown(value): return mark_safe(markdown2.markdown(force_unicode(value), extras=['code-friendly', 'fenced-code-blocks'] ))
-
在模板中添加markdown:
{% extends "base.html" %} {% load custom_markdown %} {% block main%} <p> {{ post.content|custom_markdown }} </p> {% endblock %}
現在我們可以使用markdown的語法了,如果需要代碼高亮,我們需要使用highlight.js
二、代碼高亮
-
下載highlight.js
官網地址https://highlightjs.org/,選擇你需要的語言,下載即可。
-
使用highlight.js
<link rel="stylesheet" href="/static/highlight/styles/monokai.css"> <script src="/static/highlight/highlight.pack.js"></script> <script>hljs.initHighlightingOnLoad();</script>
現在瀏覽,代碼可以高亮顯示了。
三、后台添加markdown功能,可以用pagedown
-
安裝pagedown
pip install django-pagedown
-
修改setting.py,添加應用
INSTALLED_APPS = ( ... 'pagedown', )
-
設置form.py
from django import forms from pagedown.widgets import AdminPagedownWidget from models import Article class ArticleForm(forms.ModelForm): content = forms.CharField(widget=AdminPagedownWidget(), required=False, label='') class Meta: model = Article fields = '__all__'
-
設置admin.py
from django.contrib import admin from blog.models import Article from forms import ArticleForm class ArticleAdmin(admin.ModelAdmin): form = ArticleForm admin.site.register(Article, ArticleAdmin)
此時,我們后台可以編寫及預覽markdown了