MCPcopy Index your code
hub / github.com/VLZH/django-editorjs

github.com/VLZH/django-editorjs @1.0a1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.0a1 ↗ · + Follow
31 symbols 130 edges 22 files 4 documented · 13%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

django-editorjs

GitHub version PyPi downloads

Plugin for using Editor.js in django admin.

Supported tools

  • @editorjs/paragraph - npm version
  • @editorjs/image - npm version
  • @editorjs/header - npm version
  • @editorjs/checklist - npm version
  • @editorjs/list - npm version
  • @editorjs/quote - npm version
  • @editorjs/raw - npm version
  • @editorjs/embed - npm version
  • @editorjs/delimiter - npm version
  • @editorjs/warning - npm version
  • @editorjs/link - npm version
  • @editorjs/marker - npm version
  • @editorjs/attaches - npm version
  • @editorjs/table - npm version

Installation

  1. First step is install plugin. bash pip install django-editorjs
  2. Add plugin to INSTALLED_APPS in Django settings file. python # settings.py INSTALLED_APPS = [ # some other apps 'django_editorjs' ]
  3. Register plugin's endpoints in in urlpatterns python # urls.py from django_editorjs.urls import urlpatterns urlpatterns = [ # other urls *urlpatterns ]

Simple example

# models.py
from django.db import models
from django_editorjs import EditorJsField

class Post(models.Model):
    title = models.CharField(max_length=255)
    body = EditorJsField()

    def __str__(self):
        return self.title

Configuration

Base configuration

This plugin provides additional functionality for saving images and files + allow to get information about some link. You can to configure some options in your settings.py file.

  • EDITORJS_IMAGES_FOLDER - Default folder for keep images uploaded through EditorJs (Default: {MEDIA_ROOT}/editorjs)
  • EDITORJS_FILES_FOLDER - Default folder for keep files uploaded through EditorJs (Default: {MEDIA_ROOT}/editorjs)

How to configure fields

⚠️ Note (for plugin configuration)

Usually in examples for Editor.js you will see tool names starts with lowercase, but for bypass potential conflicts i name tools with capital letters.

You can provide field specific configuration options to EditorJsField by argument editorjs_config.

Example

class Post(models.Model):
    title = models.TextField()
    body = EditorJsField(
        editorjs_config={
            "tools": {
                "Table": {
                    "disabled": False,
                    "inlineToolbar": True,
                    "config": {"rows": 2, "cols": 3,},
                }
            }
        }
    )

Config schema

  • tools
  • Image - (dict) configuration for tool ImageTool. (For more info see official documentation for tool).
  • Header - (dict) configuration for tool Header. (For more info see official documentation for tool).
  • Checklist - (dict) configuration for tool Checklist. (For more info see official documentation for tool).
  • List - (dict) configuration for tool List. (For more info see official documentation for tool).
  • Quote - (dict) configuration for tool Quote. (For more info see official documentation for tool).
  • Raw - (dict) configuration for tool RawTool. (For more info see official documentation for tool).
  • Embed - (dict) configuration for tool Embed. (For more info see official documentation for tool).
  • Delimiter - (dict) configuration for tool Delimiter. (For more info see official documentation for tool).
  • Warning - (dict) configuration for tool Warning. (For more info see official documentation for tool).
  • Link - (dict) configuration for tool LinkTool. (For more info see official documentation for tool).
  • Marker - (dict) configuration for tool Marker. (For more info see official documentation for tool).
  • Attaches - (dict) configuration for tool AttachesTool. (For more info see official documentation for tool).
  • Table - (dict) configuration for tool Table. (For more info see official documentation for tool).

API

  • EditorJsField

Extends TextField and use EditorJsWidget as widget + have additional argument in constructor: editorjs_config.

  • EditorJsWidget

Widget that you can to use for using Editor.js in Django.

Custom ImageSaver

ImageSaver is class for saving images on disk. You can to create custom saver. Custom saver must implement this interface:

class ImageSaver:
  save(file: File) -> ImageSaveResult

after creating class you can to change option EDITORJS_IMAGES_SAVER in settings to somethink like:

# settings.py
EDITORJS_IMAGES_SAVER = "your_app.your_module.YourImageSaverClass"

Custom FileSaver

Similary to ImageSaver you can to create custom FileSaver class with this interface:

class FileSaver:
  save(file: File) -> FileSaveResult

How to run demo

poetry install
poetry run python ./demo/manage.py migrate
poetry run python ./demo/manage.py createsuperuser
poetry run python ./demo/manage.py runserver

TODO

  • load tool on demand
  • more examples in README.md
  • view-function for file uploading
  • view-function for image uploading
  • view-function for link info crawler

Core symbols most depended-on inside this repo

extractToolConfig
called by 13
django_editorjs/static/django-editorjs.js
isDisabled
called by 13
django_editorjs/static/django-editorjs.js
save
called by 3
django_editorjs/file_saver.py
_get_hash
called by 1
django_editorjs/image_saver.py
main
called by 1
demo/manage.py
get_internal_type
called by 0
django_editorjs/fields.py
clean
called by 0
django_editorjs/fields.py
formfield
called by 0
django_editorjs/fields.py

Shape

Class 12
Method 12
Function 7

Languages

Python90%
TypeScript10%

Modules by API surface

django_editorjs/image_saver.py6 symbols
django_editorjs/file_saver.py5 symbols
django_editorjs/fields.py5 symbols
django_editorjs/widgets.py4 symbols
django_editorjs/views.py3 symbols
django_editorjs/static/django-editorjs.js3 symbols
demo/posts/models.py1 symbols
demo/posts/migrations/0001_initial.py1 symbols
demo/posts/apps.py1 symbols
demo/posts/admin.py1 symbols
demo/manage.py1 symbols

For agents

$ claude mcp add django-editorjs \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page