На сервере timeweb не работает django-ckeditor в админ панели

на сервере:

Python == 3.6.9

Django == 3.2.23

django-ckeditor == 5.9.0

редактор установил согласно инструкции https://django-ckeditor.readthedocs.io/en/latest/#section-9 переписывать нет смысла

мои файлы:

models.py

from ckeditor.fields import RichTextField  
...                                                                                                                                                                                                                                                             
education = RichTextField(verbose_name='Образование')
...

settings.py

INSTALLED_APPS = [
...
    'ckeditor',
    'ckeditor_uploader'
]

STATIC_ROOT = '/home/.../public_html/static/'
STATIC_URL = '/static/'
# изменение
STATICFILES_DIRS = [
    BASE_DIR / 'staticfiles'
]

if DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
###

CKEDITOR_BASEPATH = "/home/.../public_html/static/ckeditor/ckeditor/"
CKEDITOR_UPLOAD_PATH = "uploads/"

CKEDITOR_CONFIGS = {
    'default': {
        'toolbar': 'full',
        'height': 300,
        'width': 300,
    },
}

изменив код стал получать ошибку VM1137 ckeditor.js:260 Uncaught TypeError: Cannot set properties of undefined (setting 'dir')

at Object.d (VM1137 ckeditor.js:260:54)

at w (VM1137 ckeditor.js:261:181)

at Array.y (VM1137 ckeditor.js:261:336)

at z (VM1137 ckeditor.js:261:420)

at A.CKEDITOR.env.ie.f.$.onerror (VM1137 ckeditor.js:262:429)

как можно решить это?


Ответы (2 шт):

Автор решения: R4ndolphC4rter

Попробуйте пересобрать обновлённую статику вашего проекта, используя команду в IDE (или консоли): python manage.py collectstatic.

В браузере выполните хард-релоад с помощью Ctrl+F5 (перезагрузка сбросит кэш страницы и обновит статичные файлы).

Пример

settings.py

INSTALLED_APPS = [
    ...
    "ckeditor",
    "ckeditor_uploader",
    ...
]

STATIC_URL = "static/"
STATIC_ROOT = Path(BASE_DIR, "static")

MEDIA_URL = "media/"
MEDIA_ROOT = Path(BASE_DIR, "media")

CKEDITOR_UPLOAD_PATH = "uploads/"

# configs
# ...

urls.py

urlpatterns = [
    ...
    path("ckeditor/", include("ckeditor_uploader.urls")),
    ...
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

models.py

from ckeditor.fields import RichTextField
from ckeditor_uploader.fields import RichTextUploadingField

class SomeModel(models.Model):
    content = RichTextField(
        config_name="config_1",
        verbose_name=_("Content")
    )

cmd

python manage.py collectstatic
→ Ссылка
Автор решения: Дмитрий Ипатов

Может у кого случится тоже самое, мне помогло следующее:

  • удалить папку с миграциями
  • python manage.py makemigrations
  • python manage.py migrate
  • killall -9 apache2

Обновляем страницу, все работает.

→ Ссылка