A Django model field that integrates Python-Markdown for handling Markdown content
Project description
django-md-field
A Django model field that integrates Python-Markdown for handling Markdown content.
Requirements
- Python: >=3.10, <4
- Django: >=4.2, <6.0
Installation
pip install django-md-field
Usage
Basic Usage
from django.db.models import Model
from markdown_field import MarkdownField
class Post(Model):
body = MarkdownField("body")
Accessing Content
# Create a post with Markdown content
>>> post = Post.objects.create(body="## Heading\n\nThis is a paragraph.")
# Access the raw Markdown text
>>> post.body.text
'## Heading\n\nThis is a paragraph.'
# Access the rendered HTML
>>> post.body.html
'<h2>Heading</h2>\n<p>This is a paragraph.</p>'
# Access table of contents (if TOC extension is enabled)
>>> post.body.toc
'<li><a href="#heading">Heading</a></li>'
Configuring Markdown Extensions
You can configure Markdown extensions in two ways:
- In your Django settings (
settings.py):
from markdown.extensions.toc import TocExtension
from django.utils.text import slugify
MARKDOWN_FIELD = {
"extensions": [
TocExtension(slugify=slugify, toc_depth=3),
"pymdownx.highlight",
"pymdownx.arithmatex",
],
"extension_configs": {
"pymdownx.highlight": {
"linenums_style": "pymdownx-inline",
},
"pymdownx.arithmatex": {
"generic": True,
},
},
}
- Directly in the model field, this will override the
MARKDOWN_FIELDsetting insettings.py:
from markdown.extensions.toc import TocExtension
from django.utils.text import slugify
body = MarkdownField(
"body",
extensions=[
TocExtension(slugify=slugify, toc_depth=3),
"pymdownx.highlight",
"pymdownx.arithmatex",
],
extension_configs={
"pymdownx.highlight": {
"linenums_style": "pymdownx-inline",
},
"pymdownx.arithmatex": {
"generic": True,
},
},
)
For more information about available extensions, see:
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_md_field-0.1.0.tar.gz.
File metadata
- Download URL: django_md_field-0.1.0.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87dff61316dfd8825b93793b91de2b9fe7e2d7f3b52478ed751565931195c2ff
|
|
| MD5 |
d1e816e58e1b92bac02ec2810488badf
|
|
| BLAKE2b-256 |
0f65bf295822108b99b2cd7addaa6a4c0cea8faeec51dfd328bab2aef08012c5
|
File details
Details for the file django_md_field-0.1.0-py3-none-any.whl.
File metadata
- Download URL: django_md_field-0.1.0-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
041cd2e55551ab6aa8085ffd1819a9036de7f832f29e66ef3a0eb649c6c7bfc5
|
|
| MD5 |
6f1a43430c431463732c42519977773b
|
|
| BLAKE2b-256 |
037c36c5d78a382b4b1a80b6596c7020b0eafeb26b43514cece08deb904d4e2b
|