Django Summernote плагин загрузки изображения по userid
Я использую плагин Summernote для Django, и моя цель - позволить пользователям загружать медиафайлы внутри сервера. На данный момент файлы организованы (по умолчанию) в папке, названной по дате загрузки. Что-то вроде:
- «ProjectName/media/django-summernote/2024-10-11/989d2f98-ad3c-47d6-9c07-e5f6d0c731e6.png»
- «ProjectName/media/django-summernote/2024-10-17/13d646b8-d7cd-4e04-a76a-804a1ee0d090.jpg».
Возможно ли изменить путь и включить в него user_id? Что-то вроде
- «ProjectName/media/django-summernote/User100/989d2f98-ad3c-47d6-9c07-e5f6d0c731e6.png»
- «ProjectName/media/django-summernote/User200/13d646b8-d7cd-4e04-a76a-804a1ee0d090.jpg».
Что я сделал
Я сделал эти правки в файле settings.py
# Summernote plugin
def summernote_upload_to(request, filename):
user = request.user
# Create the dynamic path
upload_path = f'user_upload/{user}'
return os.path.join(upload_path)
SUMMERNOTE_CONFIG = {
'attachment_upload_to': summernote_upload_to,
'summernote': {
'attachment_filesize_limit': 200 * 1000 * 1000, # specify the file size
'width': '100%',
'height': '480',
}
}
но когда я загружаю изображение, я получаю ошибку
AttributeError: у объекта 'Attachment' нет атрибута 'user'
Я понимаю, что вы хотите настроить путь загрузки Summernote, чтобы он включал идентификатор пользователя вместо даты. Ошибка возникает из-за того, что функция attachment_upload_to получает параметры, отличные от ожидаемых. Позвольте мне помочь вам исправить это. Вот шаги, которые вы можете выполнить для решения проблемы
1.Создает пользовательскую модель вложения, включающую информацию о пользователе 2.Изменяет путь загрузки, чтобы включить идентификатор пользователя 3.Обеспечивает доступность информации о пользователе во время загрузки файла 4.Сохраняет уникальность имени файла на основе UUID 5.Обеспечивает резервное копирование для анонимных загрузок
Теперь файлы будут сохраняться по таким путям, как:
ProjectName/media/django-summernote/User100/uuid-filename.png ProjectName/media/django-summernote/User200/uuid-filename.jpg
Помните об осторожности при работе с существующими файлами и миграциями, если вы применяете это в проекте, в котором уже есть загруженные файлы.
Если вам нужен сниппет кода, свяжитесь со мной; я предоставлю подробный код, но я уверяю, что приведенный выше код будет работать, потому что он работает на моем домене