Summernote is a simple WYSIWYG editor.
django-summernote allows you to embed Summernote into Django very handy. Support admin mixins and widgets.
SETUP
-
Install
django-summernoteto your python environment.pip install django-summernote -
Add
django_summernotetoINSTALLED_APPSinsettings.py.INSTALLED_APPS += ('django_summernote', ) -
Add
django_summernote.urlstourls.py.from django.urls import include # ... urlpatterns = [ ... path('summernote/', include('django_summernote.urls')), ... ] -
Be sure to set proper
MEDIA_URLfor attachments.-
The following is an example test code:
MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') -
When debug option is enabled(
DEBUG=True), DO NOT forget to add urlpatterns as shown below:from django.conf import settings from django.conf.urls.static import static if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) -
Please, read the official v3.0 documentation for more details on file uploads.
-
-
Run database migration for preparing attachment model.
python manage.py migrate -
Collect static files before publishing or development.
python manage.py collectstatic
USAGE
Django admin site
Apply summernote to all TextField in model
In admin.py,
from django_summernote.admin import SummernoteModelAdmin from .models import SomeModel # Apply summernote to all TextField in model. class SomeModelAdmin(SummernoteModelAdmin): # instead of ModelAdmin summernote_fields = '__all__' admin.site.register(SomeModel, SomeModelAdmin)
Apply summernote only to specific TextField in model
Although Post model has several TextField, only content field will have SummernoteWidget.
In admin.py,
from django_summernote.admin import SummernoteModelAdmin from .models import Post class PostAdmin(SummernoteModelAdmin): summernote_fields = ('content',) admin.site.register(Post, PostAdmin)
Form
In forms,