django-ace provides integration for Ace - The High Performance Code Editor for the Web with Django.
django-ace is a fork of Kit Sunde's django-ace-editor by Bradley Ayers and continued by Julien Palard et al.
This is another fork by Florian Demmer; Compare changelog and source to decide whether you need the changes or better use upstream.
from django import forms
from django_ace import AceWidget
class EditorForm(forms.Form):
text = forms.CharField(widget=AceWidget)
Syntax highlighting and static analysis can be enabled by specifying the language:
class EditorForm(forms.Form):
text = forms.CharField(widget=AceWidget(mode='css'))
Themes are also supported:
class EditorForm(forms.Form):
text = forms.CharField(widget=AceWidget(mode='css', theme='twilight'))
To deactivate the syntax checker completely, disable the Web Worker:
class EditorForm(forms.Form):
text = forms.CharField(widget=AceWidget(
mode='css', theme='twilight', use_worker=False
))
All options, and their default values, are:
class EditorForm(forms.Form):
text = forms.CharField(widget=AceWidget(
mode=None, # try for example "python"
theme=None, # try for example "twilight"
use_worker=True,
wordwrap=False,
width="500px",
height="300px",
minlines=None,
maxlines=None,
showprintmargin=True,
showinvisibles=False,
usesofttabs=True,
tabsize=None,
fontsize=None,
toolbar=True,
readonly=False,
showgutter=True, # To hide/show line numbers
behaviours=True, # To disable auto-append of quote when quotes are entered
))
- Install using pip:
pip install django_ace
- Update
INSTALLED_APPS
:
INSTALLED_APPS = (
# ...
'django_ace',
)
There's an example project included in the source, to try it do:
# install in virtualenv
cd example/
virtualenv .env
. .env/bin/activate
pip install -e ..
# prepare sqlite database
./manage.py makemigrations app
./manage.py migrate
# user for admin access
./manage.py createsuperuser
# run dev-server
./manage.py runserver
Then browser to http://localhost:8000
or http://localhost:8000/admin
.
- Update Ace editor to version v1.32.3
- Expose extensions, contributed by @okaycj in upstream v1.32.0
- Update Ace editor to version v1.31.2
- Add CSS to work with admin changes in Django 4.2. Now you can use width="100%" without breaking the layout. (Anh Tran <anhtran.sky@gmail.com> in upstream v1.15.4)
- Replace flake8 with ruff
- Update Ace editor to version v1.10.1 and use minified build
- General cleanup and modernization of code
- Update example with widget in
TabularInline
- Update packaging by Julien Palard
- Python >= 3.6 is required
- Rewrite of
init()
function to support admin inline-forms - New widget option
use_worker
- Use template engine to generate widget HTML
- Rewrite of boolean data attributes
- Add tests, update example with admin integration
- Last release supporting Python 2.7
- Support Grappelli inlines.
- FIX JavaScript error when using
JavaScriptCatalog
.
- New widget option
showgutters
to hide line numbers. - New widget option
behaviours
to avoid auto-insert of quotes.
- New widget option
readonly
. - Update ACE editor to version v1.4.12.
- New widget option
toolbar
. - Update ACE editor to version v1.4.8.
- New widget option
fontsize
. - Update ACE editor to version v1.4.7.
- New widget option
tabsize
. - Upgrade ACE editor to version v1.4.2.
- Update Django compatibility to
>1.11,<=2.1
- New widget options
minLines
,maxLines
,showinvisibles
,usesofttabs
. - Upgrade ACE editor to version v1.4.0.
- Updated example for Django 1.11
- PEP8 improvements
- Upgrade ACE editor to version 1.1.8
- Add support for showprintmargin
- Add support for Django 1.7 by removing deprecated imports.
- Initial release.