乐趣区

Django-Markdown插件mdeditor的使用

功能

  1. 支持 Editor.md 大部分功能

    • 支持标准的 Markdown 文本、CommonMark 和 GFM (GitHub Flavored Markdown) 文本;
    • 支持实时预览、图片上传、格式化代码、搜索替换、皮肤、多语言等。
    • 支持 TOC 目录和表情;
    • 支持 TeX, 流程图、时序图等图表扩展。
  2. 可自定义 Editor.md 工具栏。
  3. 提供了 MDTextField 字段用来支持模型字段使用。
  4. 提供了 MDTextFormField 字段用来支持 Form 和 ModelForm.
  5. 提供了 MDEditorWidget 字段用来支持 admin 自定义样式使用。

安装

pip install django-mdeditor

settings.py 文件中配置

INSTALLED_APPS = [
    ...
    'mdeditor',
]

MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
MEDIA_URL = '/media/'

在项目的根 urls.py 文件扩展 url 和媒体文件 url

from django.conf.urls import url, include
from django.conf.urls.static import static
from django.conf import settings

urlpatterns = [url(r'mdeditor/', include('mdeditor.urls'))
]

if settings.DEBUG:
    # static files (images, css, javascript, etc.)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

app 下的 models.py 文件创建模型

from django.db import models
from mdeditor.fields import MDTextField

class DemoModel(models.Model):
    name = models.CharField(max_length=10)
    content = MDTextField()

admin.py 中注册

from django.contrib import admin
from . import models

admin.site.register(models.DemoModel)

迁移数据库

python manage.py makemigrations
python manage.py migrate

现在后台的显示没有问题,但是前段显示并没有渲染出 Markdown 样式。解决方法如下:

from django.db import models
from mdeditor.fields import MDTextField
import markdown  # 需要 pip 进行安装

class DemoModel(models.Model):
    name = models.CharField(max_length=10)
    content = MDTextField()
    
    def get_markdown_content(self):
        return markdown.markdown(self.content, extensions=[
            'markdown.extensions.extra',
            'markdown.extensions.codehilite',
            'markdown.extensions.toc',
        ])

添加了上面的代码后,在渲染 content 字段时调用 get_markdown_content 方法即可。

退出移动版