使用markdown及highlight


一、markdown

  1. 安裝markdown2

    pip install markdown2
    
  2. 應用markdown2

    進入blog APP,創建templatetags文件夾,在文件夾內創建__init__.py,custom_markdown.py

  3. 修改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']
                                    ))
    
  4. 在模板中添加markdown:

    {% extends "base.html" %}
    {% load custom_markdown %}
    
    {% block main%}
        <p>
            {{ post.content|custom_markdown }}
        </p>
    {% endblock %}
    

現在我們可以使用markdown的語法了,如果需要代碼高亮,我們需要使用highlight.js

二、代碼高亮

  1. 下載highlight.js

    官網地址https://highlightjs.org/,選擇你需要的語言,下載即可。

  2. 使用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

  1. 安裝pagedown

    pip install django-pagedown 
    
  2. 修改setting.py,添加應用

    INSTALLED_APPS = (
        ...
        'pagedown',
    )
    
  3. 設置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__'
    
  4. 設置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了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM