@David138

Почему у меня при миграции модуля выходит ошибка об отсутсвии модуля path_to_storage?

Привет. Почему у меня при миграции модуля выходит ошибка об отсутсвии модуля path_to_storage? в google об этом модуле ни слова. Я хотел добавить редактор django-ckeditor-5 и ориентировался по этой статье - . Ниже отправляю свои действия и какие ошибки получил. Что я не так сделал?
$ pip install django-ckeditor-5==0.2.12
$ cat Project1/settings.py
from pathlib import Path
import os
...
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'portfolio',
    #'ckeditor', 
    #'ckeditor_uploader',
    'django_ckeditor_5',
]
...
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.0/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]
# Default primary key field type
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
MEDIA_URL = "/media/"
#MEDIA_ROOT = BASE_DIR / "media/"
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
customColorPalette = [
        {
                  ...ТУТ Я СКОПИРОВАЛ ИНФУ С САЙТА
        },
    ]
CKEDITOR_5_CUSTOM_CSS = 'path_to.css' # optional
CKEDITOR_5_FILE_STORAGE = "path_to_storage.CustomStorage" # optional
CKEDITOR_5_CONFIGS = {
    'default': {
       ...ТУТ Я СКОПИРОВАЛ ИНФУ С САЙТА
        }
    },
    'list': {
        'properties': {
            'styles': 'true',
            'startIndex': 'true',
            'reversed': 'true',
        }
    }
}
$ cat Project1/urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from portfolio import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('api-auth/', include('rest_framework.urls')),
    path('', include('portfolio.urls')),
    #path('ckeditor/',include('ckeditor_uploader.urls')),
    path("ckeditor5/", include('django_ckeditor_5.urls'), name="ck_editor_5_upload_file"),
    path('contents/', views.contents),
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
$ cat portfolio/models.py
from django.db import models
#from ckeditor_uploader.fields import RichTextUploadingField
from django_ckeditor_5.fields import CKEditor5Field
class Portfolio(models.Model):
    progress = models.TextField(verbose_name="Достижение")
    #description = RichTextUploadingField(verbose_name="Описание")
    description = CKEditor5Field(verbose_name="Описание", config_name='extends')
    image = models.ImageField(upload_to='uploads/%Y/%m/%d/', blank=True, null=True)
    url = models.URLField(blank=True, null=True)
$ python manage.py makemigrations
Traceback (most recent call last):
  File "/home//Project1/backend/manage.py", line 22, in <module>
    main()
  File "/home//Project1/backend/manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/home//pyenv/lib/python3.10/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/home//pyenv/lib/python3.10/site-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home//pyenv/lib/python3.10/site-packages/django/core/management/base.py", line 413, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/dato/pyenv/lib/python3.10/site-packages/django/core/management/base.py", line 454, in execute
    self.check()
  File "/home//pyenv/lib/python3.10/site-packages/django/core/management/base.py", line 486, in check
    all_issues = checks.run_checks(
  File "/home/dato/pyenv/lib/python3.10/site-packages/django/core/checks/registry.py", line 88, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "/home//pyenv/lib/python3.10/site-packages/django/core/checks/urls.py", line 14, in check_url_config
    return check_resolver(resolver)
  File "/home//pyenv/lib/python3.10/site-packages/django/core/checks/urls.py", line 24, in check_resolver
    return check_method()
  File "/home//pyenv/lib/python3.10/site-packages/django/urls/resolvers.py", line 519, in check
    for pattern in self.url_patterns:
  File "/home/dato/pyenv/lib/python3.10/site-packages/django/utils/functional.py", line 47, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/home//pyenv/lib/python3.10/site-packages/django/urls/resolvers.py", line 738, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/home//pyenv/lib/python3.10/site-packages/django/utils/functional.py", line 47, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/home//pyenv/lib/python3.10/site-packages/django/urls/resolvers.py", line 731, in urlconf_module
    return import_module(self.urlconf_name)
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home//Project1/backend/Project1/urls.py", line 11, in <module>
    path("ckeditor5/", include('django_ckeditor_5.urls'), name="ck_editor_5_upload_file"),
  File "/home//pyenv/lib/python3.10/site-packages/django/urls/conf.py", line 39, in include
    urlconf_module = import_module(urlconf_module)
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home//pyenv/lib/python3.10/site-packages/django_ckeditor_5/urls.py", line 3, in <module>
    from . import views
  File "/home//pyenv/lib/python3.10/site-packages/django_ckeditor_5/views.py", line 48, in <module>
    storage = get_storage_class()
  File "/home//pyenv/lib/python3.10/site-packages/django_ckeditor_5/views.py", line 29, in get_storage_class
    return import_string(storage_setting)
  File "/home//pyenv/lib/python3.10/site-packages/django/utils/module_loading.py", line 30, in import_string
    return cached_import(module_path, class_name)
  File "/home//pyenv/lib/python3.10/site-packages/django/utils/module_loading.py", line 15, in cached_import
    module = import_module(module_path)
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'path_to_storage'
  • Вопрос задан
  • 32 просмотра
Решения вопроса 1
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
Потому что у вас указано в settings:
CKEDITOR_5_FILE_STORAGE = "path_to_storage.CustomStorage" # optional

эта строка опциональная, но несмотря на это вы ее указали. Ну так указывайте путь до стораджа который хотели подключить.
Ну либо не копируйте строки бездумно.
path_to_storage - просто подразумевается некий путь до некоего кастомного стораджа
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы