Skip to main content

一个简单的 Django 应用程序来编辑降价文本。

项目描述

django-mdeditor

环境噪声 环境噪声 环境噪声 环境噪声 环境噪声 执照

Django-mdeditor是基于Editor.md的django的 Markdown 编辑器插件应用程序。

Django-mdeditor的灵感来自伟大的django-ckeditor

笔记:

  • 对于 Markdown 页面渲染问题,建议使用后端渲染。因为Editor.md很久没有更新了,所以需要调试一些bug和兼容性问题。当然,前端同学可以选择。
  • 关于Jquery冲突,不能删除,因为它是后台管理的要求。建议将编辑页面直接分开单页或全屏,使用自己的静态文件与其他页面区分开来。

特征

  • 几乎 Editor.md 的功能
    • 支持标准 Markdown/CommonMark 和 GFM(GitHub Flavored Markdown);
    • 功能齐全:实时预览、图片(跨域)上传、预格式化文本/代码块/表格插入、搜索替换、主题、多语言;
    • Markdown Extras : 支持 ToC (Table of Contents), Emoji;
    • 支持 TeX(LaTeX 表达式,基于 KaTeX)、Markdown 扩展语法的流程图和序列图;
  • 可以自定义 Editor.md 工具栏
  • MDTextField 字段是为模型提供的,可以直接在 django admin 中显示。
  • 为 Form 和 ModelForm 提供了 MDTextFormField。
  • 为管理自定义小部件提供了 MDEditorWidget。

快速开始

  • 安装。
    pipenv install django-mdeditor
    # or
    pip install django-mdeditor
  • 添加mdeditor到您的 INSTALLED_APPS 设置中,如下所示:
    INSTALLED_APPS = [
        ...
        'mdeditor',
    ]
  • 为 django3.0+ 添加框架设置如下:
X_FRAME_OPTIONS = 'SAMEORIGIN' 
  • 将“媒体”网址添加到您的设置中,如下所示:
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
MEDIA_URL = '/media/'

uploads/editor在您的项目中为媒体文件创建文件夹。

  • 像这样将 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)
  • 像这样写你的模型:
from django.db import models
from mdeditor.fields import MDTextField

class ExampleModel(models.Model):
    name = models.CharField(max_length=10)
    content = MDTextField()
  • 注册您的模型admin.py

  • 运行python manage.py makemigrationspython manage.py migrate创建您的模型。

  • 登录 Admin ,您可以看到一个降价编辑器文本字段,如下所示:

用法

使用 Markdown 编辑模型中的字段

使用 Markdown 编辑模型中的字段,我们只需将TextField模型的替换为 MDTextField.

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

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

后台管理,会自动显示markdown编辑富文本。

在前端模板中使用,可以这样使用:

{% load staticfiles%}
<! DOCTYPE html>
<html lang = "en">
    <head>
        <meta http-equiv = "Content-Type" content = "text / html; charset = utf-8" />

    </ head>
    <body>
        <form method = "post" action = "./">
            {% csrf_token%}
            {{form.media}}
            {{form.as_p}}
            <p> <input type = "submit" value = "post"> </ p>
        </ form>
    </ body>
</ html>

使用 Markdown 编辑表单中的字段

使用markdown编辑Form中的字段,使用MDTextFormFieldinstead of forms.CharField,如下:

from mdeditor.fields import MDTextFormField

class MDEditorForm (forms.Form):
    name = forms.CharField ()
    content = MDTextFormField ()

ModelForm可以自动将对应的model字段转换为form字段,可以正常使用:

class MDEditorModleForm (forms.ModelForm):

    class Meta:
        model = ExampleModel
        fields = '__all__'

在管理员中使用降价小部件

在管理员中使用 markdown 小部件,例如:

from django.contrib import admin
from django.db import models

# Register your models here.
from. import models as demo_models
from mdeditor.widgets import MDEditorWidget


class ExampleModelAdmin (admin.ModelAdmin):
    formfield_overrides = {
        models.TextField: {'widget': MDEditorWidget}
    }


admin.site.register (demo_models.ExampleModel, ExampleModelAdmin)

自定义工具栏

将以下配置添加到settings

MDEDITOR_CONFIGS = {
    'default':{
        'width': '90% ',  # Custom edit box width
        'heigth': 500,  # Custom edit box height
        'toolbar': ["undo", "redo", "|",
                    "bold", "del", "italic", "quote", "ucwords", "uppercase", "lowercase", "|",
                    "h1", "h2", "h3", "h5", "h6", "|",
                    "list-ul", "list-ol", "hr", "|",
                    "link", "reference-link", "image", "code", "preformatted-text", "code-block", "table", "datetime"
                    "emoji", "html-entities", "pagebreak", "goto-line", "|",
                    "help", "info",
                    "||", "preview", "watch", "fullscreen"],  # custom edit box toolbar 
        'upload_image_formats': ["jpg", "jpeg", "gif", "png", "bmp", "webp"],  # image upload format type
        'image_folder': 'editor',  # image save the folder name
        'theme': 'default',  # edit box theme, dark / default
        'preview_theme': 'default',  # Preview area theme, dark / default
        'editor_theme': 'default',  # edit area theme, pastel-on-dark / default
        'toolbar_autofixed': True,  # Whether the toolbar capitals
        'search_replace': True,  # Whether to open the search for replacement
        'emoji': True,  # whether to open the expression function
        'tex': True,  # whether to open the tex chart function
        'flow_chart': True,  # whether to open the flow chart function
        'sequence': True, # Whether to open the sequence diagram function
        'watch': True,  # Live preview
        'lineWrapping': False,  # lineWrapping
        'lineNumbers': False  # lineNumbers
    }
    
}

反馈

欢迎使用和反馈!

您可以创建问题或加入QQ群。

参考

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

fs-django-mdeditor-0.1.24.tar.gz (1.5 MB 查看哈希

已上传 source