功能
-
支持 Editor.md 大部分功能
- 支持标准的 Markdown 文本、CommonMark 和 GFM (GitHub Flavored Markdown) 文本;
- 支持实时预览、图片上传、格式化代码、搜索替换、皮肤、多语言等。
- 支持 TOC 目录和表情;
- 支持 TeX, 流程图、时序图等图表扩展。
- 可自定义 Editor.md 工具栏。
- 提供了 MDTextField 字段用来支持模型字段使用。
- 提供了 MDTextFormField 字段用来支持 Form 和 ModelForm.
- 提供了 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
方法即可。