功能

  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, includefrom django.conf.urls.static import staticfrom django.conf import settingsurlpatterns = [     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 modelsfrom mdeditor.fields import MDTextFieldclass DemoModel(models.Model):    name = models.CharField(max_length=10)    content = MDTextField()

admin.py中注册

from django.contrib import adminfrom . import modelsadmin.site.register(models.DemoModel)

迁移数据库

python manage.py makemigrationspython manage.py migrate

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

from django.db import modelsfrom mdeditor.fields import MDTextFieldimport 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方法即可。