Sorl-thumbnail не создает миниатюры в папке «/cache»

Я пытаюсь использовать sorl-thumbnail в своих шаблонах, но мне не удалось успешно сгенерировать миниатюры в правильном каталоге «/cache», который sorl-thumbnail использует для извлечения миниатюр.

Кажется, что эта проблема случалась с несколькими людьми раньше, однако предыдущие решения не работали для меня. Я запустил ./manage.py migrate и убедился, что использую sorl.thumbnail.ImageField, а не django.db.models.ImageField по умолчанию в моих моделях.py, и я попытался использовать ./manage.py thumbnail cleanup и ./manage.py thumbnail clear. Я также читал, что memcached может мешать работе, но даже после того, как все упоминания о memcached закомментированы, я не могу заставить работать sorl-thumbnails.

Для справки: я запускаю свой проект на сервере Ubuntu 18.04.2 apache2, размещенном на DigitalOcean.

HTML:

{% for obj in object_list %}
    ...
    {% thumbnail obj.image "75x75" as im %}
        <img class = "artwork" src = "{{im.url }}"/>
    {% endthumbnail %}
    ...
{% endfor %}

настройки.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'sorl.thumbnail',
    'posts',
    'login',
]

...

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "/home/arthouse/workspace/code/side_proj/assets/")
]

STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "/home/arthouse/workspace/code/side_proj/static_cdn/")

MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "/media_cdn")

модели.py:

from sorl.thumbnail import ImageField

class Post(models.Model):
    image = ImageField(upload_to=upload_location,
        null=True,
        blank=True,
        width_field = "width_field",
        height_field = "height_field")

Я установил THUMBNAIL_DEBUG=True, но из этого ничего не выходит. Я вижу, что миниатюры создаются (например: media/cache/6d/13/6d13206b5207bf2b6234295b749f1419.jpg), но в моем MEDIA_ROOT никогда не создается каталог /cache, что приводит к ошибке 404.

Я рад поделиться дополнительными фрагментами кода, если это поможет!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
933
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте установить параметр Solr Thumbnail, который определяет, куда он загружает файлы:

THUMBNAIL_PREFIX = 'КЭШ/'

Затем запустите collectstatic --noinput как обычно. В Digital Ocean вы должны увидеть новую папку с именем CACHE, созданную в вашей корзине.

Ошибка 404 звучит так, будто вы забыли следующие две настройки:

AWS_S3_ENDPOINT_URL — определяет, как статический тег переписывает URL-адрес img, чтобы указать его местоположение в вашей корзине.

AWS_S3_CUSTOM_DOMAIN — то же, что и выше, если вы используете личный домен.

Ответ принят как подходящий

Как и предполагалось, Sorl Thumbnail работал без проблем, и проблема заключалась в ошибке пользователя. Я неправильно настроил MEDIA_ROOT в моем settings.py, что привело к тому, что Sorl Thumbnail пытался получить медиафайл из несуществующего местоположения.

Другие вопросы по теме