Для настройки TinyMCE + Filebrowser начнем установку с TinyMCE (у меня windows).
Установка TinyMCE:
pip install django-tinymce
Добавьте tinymce в INSTALLED_APPS в settings.py вашего проекта:
INSTALLED_APPS = (
...
'tinymce',
...
)
Добавьте tinymce.urls в urls.py своего проекта:
urlpatterns = patterns('',
...
path('tinymce/', include('tinymce.urls')),
...
)
Установка FileBrowser и Grappelli
Перед установкой FileBrowser выполним установку Grappelli:
pip install django-grappelli
Установка FileBrowser
pip install django-filebrowser
Добавьте FileBrowser и Grappelli в INSTALLED_APPS (перед django.contrib.admin):
# название_проекта/settings.py
INSTALLED_APPS = [
'grappelli',
'filebrowser',
'django.contrib.admin',
]
Добавьте сайт FileBrowser и Grappelli в свои шаблоны url (перед любыми адресами администратора (admin-urls)):
# название_проекта/urls.py
from filebrowser.sites import site
urlpatterns = [
path('admin/filebrowser/', site.urls),
path('grappelli/', include('grappelli.urls')),
path('admin/', admin.site.urls),
]
Приложение для теста
Создадим приложение testPosts:
py manage.py startapp testPosts
Добавим код в модель models.py:
# название_проекта/testPosts/models.py
from django.db import models
from tinymce.models import HTMLField
class Film(models.Model):
title = models.CharField(max_length=200)
exerpt = models.TextField(max_length=200)
content = HTMLField()
Добавим приложение в INSTALLED_APPS:
# название_проекта/settings.py
INSTALLED_APPS = [
'testPosts.apps.TestpostsConfig',
...
]
Выполним создание миграции и миграцию приложения:
python manage.py makemigrations testPosts python manage.py migrate
Добавим приложение в админку admin.py:
# название_проекта/testPosts/admin.py from django.contrib import admin from .models import testPosts admin.site.register(testPosts)
Необходимо создать в коне 2 каталога media и static. Настройки для каталогов и TinyMCE:
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
PROJECT_DIR = os.path.dirname(__file__)
TINYMCE_SPELLCHECKER = True
TINYMCE_JS_URL = os.path.join(STATIC_URL, "tinymce/tinymce.min.js")
TINYMCE_JS_ROOT = os.path.join(STATIC_ROOT, "tinymce")
FILEBROWSER_DIRECTORY = ''
DIRECTORY = ''
X_FRAME_OPTIONS = 'SAMEORIGIN'
TINYMCE_DEFAULT_CONFIG = {
"relative_urls": False,
"remove_script_host": False,
"convert_urls": True,
'cleanup_on_startup': True,
'custom_undo_redo_levels': 20,
'theme': 'silver',
'plugins': '''
textcolor save link image media preview codesample contextmenu
table code lists fullscreen insertdatetime nonbreaking
contextmenu directionality searchreplace wordcount visualblocks
visualchars code fullscreen autolink lists charmap print hr
anchor pagebreak
''',
'toolbar1': '''
bold italic underline | fontselect,
fontsizeselect | forecolor backcolor | alignleft alignright |
aligncenter alignjustify | indent outdent | bullist numlist table |
| link image media | codesample |
''',
'contextmenu': 'formats | link image',
'menubar': True,
'statusbar': True,
"language": "en_US",
}
В файл настройки url проекта необходимо добавить + static. Мой итоговый код:
# название_проекта/urls.py
from django.contrib import admin
from django.urls import include, path
from filebrowser.sites import site
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/filebrowser/', site.urls),
path('grappelli/', include('grappelli.urls')),
path('tinymce/', include('tinymce.urls')),
path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Переходим в админку создаем тестовый пост. У меня окно выглядит вот так

Жмем вставку картинки

Готовый код можно посмотреть на github https://github.com/SupportG/django-tinymce-filebrowser

Добавить комментарий