Skip to main content

django-mdeditor

ENV ENV ENV ENV ENV LICENSE

Django-mdeditor is Markdown Editor plugin application for django base on Editor.md.

Django-mdeditor was inspired by great django-ckeditor.

Note:

  • For Markdown page rendering issues, backend rendering is recommended. Because Editor.md has not been updated for a long time, some bugs and compatibility issues need to be debugged. Of course, front-end students can choose.
  • Regarding the Jquery conflict, it cannot be deleted because it is required by the admin backend. It is recommended to separate the editing page on a single page or a full screen directly, using its own static file to distinguish it from other pages.

Features

  • Almost Editor.md features
    • Support Standard Markdown / CommonMark and GFM (GitHub Flavored Markdown);
    • Full-featured: Real-time Preview, Image (cross-domain) upload, Preformatted text/Code blocks/Tables insert, Search replace, Themes, Multi-languages;
    • Markdown Extras : Support ToC (Table of Contents), Emoji;
    • Support TeX (LaTeX expressions, Based on KaTeX), Flowchart and Sequence Diagram of Markdown extended syntax;
  • Can constom Editor.md toolbar
  • The MDTextField field is provided for the model and can be displayed directly in the django admin.
  • The MDTextFormField is provided for the Form and ModelForm.
  • The MDEditorWidget is provided for the Admin custom widget.

Quick start

  • Installation.
    pipenv install django-mdeditor
    # or
    pip install django-mdeditor
  • Add mdeditor to your INSTALLED_APPS setting like this:
    INSTALLED_APPS = [
        ...
        'mdeditor',
    ]
  • add frame settings for django3.0+ like this:
X_FRAME_OPTIONS = 'SAMEORIGIN' 
  • Add 'media' url to your settings like this:
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
MEDIA_URL = '/media/'

Make folder uploads/editor in you project for media files.

  • Add url to your urls like this:
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)
  • Write your models like this:
from django.db import models
from mdeditor.fields import MDTextField

class ExampleModel(models.Model):
    name = models.CharField(max_length=10)
    content = MDTextField()
  • Register your model in admin.py

  • Run python manage.py makemigrations and python manage.py migrate to create your models.

  • Login Admin ,you can see a markdown editor text field like this:

Usage

Edit fields in the model using Markdown

Using Markdown to edit the fields in the model, we simply replace the TextField of the model with MDTextField.

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

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

Admin in the background, will automatically display markdown edit rich text.

Used in front-end template, you can use like this:

{% 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>

Edit fields in the Form using markdown

Use markdown to edit fields in the Form, use MDTextFormField instead of forms.CharField, as follows:

from mdeditor.fields import MDTextFormField

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

ModelForm can automatically convert the corresponding model field to the form field, which can be used normally:

class MDEditorModleForm (forms.ModelForm):

    class Meta:
        model = ExampleModel
        fields = '__all__'

Use the markdown widget in admin

Use the markdown widget in admin like as :

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)

Customize the toolbar

Add the following configuration to settings:

MDEDITOR_CONFIGS = {
    'default':{
        'width': '90% ',  # Custom edit box width
        'height': 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
        'language': 'zh'  # zh / en / es 
    }
    
}

Feedback

Welcome to use and feedback!

You can create a issue or join in QQ Group.

Reference

Metadata

Release files for custom-django-mdeditor 0.1.20

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for custom-django-mdeditor 0.1.20
File Size Uploaded
custom_django_mdeditor-0.1.20.tar.gz 1.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for custom-django-mdeditor 0.1.20
File Interpreter ABI Platform
custom_django_mdeditor-0.1.20-py3-none-any.whl Python 3 none any Details

Total release size: 3.3 MB

Release files / custom_django_mdeditor-0.1.20.tar.gz

Download URL custom_django_mdeditor-0.1.20.tar.gz
Size 1.6 MB
Tags Source
SHA-256 checksum
How to use checksums
821aab1521cad9d42957473be1dd8d3b5eea812e8db41f8289f2ff070a910a28
BLAKE2b-256 checksum
How to use checksums
463d936a0c27e524f224bfa79df24e36218c099e901fe360bae853bf9dc2f2be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / custom_django_mdeditor-0.1.20-py3-none-any.whl

Download URL custom_django_mdeditor-0.1.20-py3-none-any.whl
Size 1.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
bb6bed24abb3f35baf16198762c65ff238eb712290572b21e3b21d263fc82125
BLAKE2b-256 checksum
How to use checksums
c2fdbce805c7b8ce42e220ca4dc0623db0da14d3459b0302c17e63e002872216
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.20 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page