How agusmakmun/django-markdown-editor works
Martor is a Django Markdown editor: users enter Markdown in a form or admin field, edit it with the Ace-backed themed browser editor, and can preview rendered output; saved content can also be rendered through a template filter. Separate capabilities include image upload, user mentions, and Markdown enhancements such as emoji, video embeds, custom heading IDs, and HTML safety. Django views and utilities provide the server-side endpoints and rendering. The README and sampled widget and JavaScript excerpts support the main flow; unsampled endpoint internals are represented only at their known module boundary.
Main entry points: utils.py Markdown conversion · martor.bootstrap.js Editor browser · widgets.py Editor widget · fields.py Form and model fields
Components 25
Django integration
- Form and model fields
martor/fields.py - Martor model field
martor/models.py - Admin integration
martor/admin.py - Editor widget
martor/widgets.py - Editor settings
martor/settings.py
Editor experience
- Editor browser
martor/static/martor/js/martor.bootstrap.js - Ace Markdown editor
martor/static/plugins/js/ace.js - Semantic theme editor
martor/static/martor/js/martor.semantic.js - Tailwind theme editor
martor/static/martor/js/martor.tailwind.js - Live preview request
martor/static/martor/js/martor.bootstrap.js
Markdown rendering
- Markdown conversion
martor/utils.py - Template filter
martor/templatetags/martortags.py - Markdown extensions
martor/extensions/__init__.py - HTML safety
martor/extensions/escape_html.py - Emoji parsing
martor/extensions/emoji.py - Mention parsing
martor/extensions/mention.py - Video embeds
martor/extensions/mdx_video.py - Custom heading IDs
martor/extensions/mdx_add_id.py
AJAX capabilities
- AJAX endpoints
martor/views.py - Endpoint routing
martor/urls.py - Upload API
martor/api.py
Other components
- Editor user
- Django application
- Image upload service
- User search
Connections 27
- Editor user → Form and model fields: enters Markdown
- Editor user → Admin integration: edits content
- Django application → Form and model fields: uses fields
- Django application → Martor model field: stores Markdown field
- Django application → Admin integration: registers editor
- Form and model fields → Editor widget: uses widget
- Martor model field → Editor widget: uses widget
- Admin integration → Editor widget: renders editor
- Editor widget → Editor settings: reads options
- Editor widget → Editor browser: configures editor
- Editor browser → Ace Markdown editor: creates editor
- Editor browser → Live preview request: requests preview
- Live preview request → Endpoint routing: posts Markdown
- Endpoint routing → AJAX endpoints: routes request
- AJAX endpoints → Markdown conversion: converts Markdown
- Markdown conversion → Markdown extensions: applies extensions
- Markdown conversion → HTML safety: sanitizes output
- Markdown conversion → Emoji parsing: parses emoji
- Markdown conversion → Mention parsing: parses mentions
- Markdown conversion → Video embeds: embeds video
- Markdown conversion → Custom heading IDs: adds IDs
- Template filter → Markdown conversion: renders Markdown
- Editor browser → Upload API: uploads image
- Upload API → Image upload service: sends image
- Editor browser → AJAX endpoints: searches users
- Semantic theme editor → Ace Markdown editor: uses editor
- Tailwind theme editor → Ace Markdown editor: uses editor