功能

  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方法即可。


hukang
18 声望6 粉丝

一名热爱技术的上进小青年。