Skip to main content

Inspired by mezzanine-mdown, django-pagedown, and django-markupmirror.

This package provides rich text widgets and filters for Mezzanine to author content using Markdown syntax instead of the default TinyMCE editor.

Features

  • Uses the PageDown markdown editor from Stack Exchange (optional), and Python-Markdown for rendering.

  • Supports client-side and server-side live previews in the editor. Client-side previews use PageDown’s JavaScript previewer. Server-side previews use the same rendering filter as the final page.

  • Supports bundled and custom Python-Markdown extensions, and provides a few filters that are preconfigured to use some extensions, such as Markdown Extra. If server-side previews are enabled, configured extensions will be enabled in the editor preview.

  • HTML sanitizing using Bleach. Bleach is already a dependency of Mezzanine.

  • Integrates the editor’s Insert Image button with Mezzanine’s file browser (Media Library). Clicking the Insert Image button pops up an in-window selection dialog of Mezzanine’s Media Library.

How to Use

  1. Get and install the package:

    pip install mezzanine-pagedown

    Mezzanine 1.3 or higher is required.

  2. Install the app in your Mezzanine project by adding mezzanine_pagedown to the list of INSTALLED_APPS in your project’s settings.py.

  3. Configure Mezzanine to use one of the provided rich text widgets. In your project’s settings.py, set RICHTEXT_WIDGET_CLASS to:

    • 'mezzanine_pagedown.widgets.PageDownWidget' to use the PageDown editor with live preview.

    • 'mezzanine_pagedown.widgets.PlainWidget' to use a plain textarea without preview.

  4. Configure Mezzanine to use one of the provided rich text filters for rendering markdown content. In settings.py, set RICHTEXT_FILTERS to include one of the following:

    • 'mezzanine_pagedown.filters.plain' to use plain Markdown syntax with no extensions.

    • 'mezzanine_pagedown.filters.extra' to use Markdown Extra.

    • 'mezzanine_pagedown.filters.codehilite' to enable the CodeHilite extension.

    • 'mezzanine_pagedown.filters.custom' to enable an explicit list of extensions through the PAGEDOWN_MARKDOWN_EXTENSIONS setting (see below).

  5. Disable Mezzanine’s HTML sanitizing so that it does not interfere with markdown’s blockquote syntax (>):

    RICHTEXT_FILTER_LEVEL = 3

    mezzanine-pagedown provides its own sanitizing after rendering Markdown to HTML, and respects Mezzanine’s RICHTEXT_ALLOWED_TAGS, RICHTEXT_ALLOWED_ATTRIBUTES, and RICHTEXT_ALLOWED_STYLES settings.

  6. (Optional): Server-side previews:

    • In settings.py, enable server-side live previews in the editor:

      PAGEDOWN_SERVER_SIDE_PREVIEW = True

      By default (False), previews are generated client-side using PageDown’s previewer.

    • In urls.py, enable the preview URL:

      import mezzanine_pagedown.urls

      Then add the following line to urlpatterns:

      ("^pagedown/", include(mezzanine_pagedown.urls)),

      In this case, the preview URL is /pagedown/preview/. You can replace "^pagedown/" with your own path.

  7. (Optional): Set enabled extensions. Requires the custom filter:

    RICHTEXT_FILTERS = ['mezzanine_pagedown.filters.custom']
    PAGEDOWN_MARKDOWN_EXTENSIONS = ('extra','codehilite','toc')

    To use a custom extension, import it and include an instance in the list of extensions:

    from myapp.markdown_extensions.myextension import MyExtension
    PAGEDOWN_MARKDOWN_EXTENSIONS = ('extra', MyExtension())
  8. (Optional): Generate and use a pygments CSS style for use with the CodeHilite extension (requires installing pygments):

    python manage.py pygments_styles <scheme_name>

License

Licence: BSD. See included LICENSE file.

Note that this license applies to this repository only. The PageDown JavaScript library is used as a sub-repository and has its own license.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mezzanine-pagedown-1.5.tar.gz (64.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mezzanine_pagedown-1.5-py3-none-any.whl (65.3 kB view details)

Uploaded Python 3

File details

Details for the file mezzanine-pagedown-1.5.tar.gz.

File metadata

  • Download URL: mezzanine-pagedown-1.5.tar.gz
  • Upload date:
  • Size: 64.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for mezzanine-pagedown-1.5.tar.gz
Algorithm Hash digest
SHA256 a528f6bc52ddb1209fed3f8408e09c2e374b42b8ca2b4cce098796809f099f4d
MD5 f732e225452d9b0b882a3fe046bdc040
BLAKE2b-256 d7174e1bc343794dbedf420d022b008ebfc25158ddf9a9ac2d0abea36e697338

See more details on using hashes here.

File details

Details for the file mezzanine_pagedown-1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for mezzanine_pagedown-1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8e6c2a80b182c208eb1a3785f6ed8456e03667dc9877712ace6df6d0d468eab9
MD5 cc007c7ca07339b6bc6f6907eed6be65
BLAKE2b-256 c4173f9938020e6df09950d2c4f473517ddbb4e6f2abe1353b0f4b54d1ce0791

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.5 This release

2 files

1.4

2 files

1.3

2 files

1.2

2 files

1.1

2 files

1.0

2 files

0.9

1 file

0.8

1 file

0.7

1 file

0.6

1 file

0.5

1 file

0.3

1 file

0.2

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page