唯一缩略图不会在“ / cache”文件夹中生成缩略图

时间:2019-05-28 22:06:32

标签: django sorl-thumbnail

我正在尝试在模板中使用sorl-thumbnail,但是我无法在'sorl-thumbnail'用于检索缩略图的正确的'/ cache'目录中成功生成缩略图。

似乎这个问题以前已经发生在许多人身上,但是以前的解决方案对我来说没有用。我已运行./manage.py migrate,并确保我在models.py中使用的是sorl.thumbnail.ImageField而不是默认的django.db.models.ImageField,并且我尝试使用./manage.py thumbnail cleanup和{ {1}}。我还读到memcached可能会干扰某些事情,但是即使所有提到memcached的内容都被注释掉了,我也无法使用唯一的缩略图。

作为参考,我在由DigitalOcean托管的Ubuntu 18.04.2 apache2服务器上运行我的项目。

html:

./manage.py thumbnail clear

settings.py:

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

models.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")

我已经设置了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") ,但是没有输出。我可以看到生成了缩略图(例如:media / cache / 6d / 13 / 6d13206b5207bf2b6234295b749f1419.jpg),但是在MEDIA_ROOT中从未创建过/ cache目录,这会导致404错误。

如果有帮助,我很乐意分享更多代码段!

2 个答案:

答案 0 :(得分:0)

尝试设置“ Solr缩略图”设置来定义文件上传位置:

THUMBNAIL_PREFIX ='CACHE /'

然后像往常一样运行collectstatic --noinput。在Digital Ocean中,您应该在存储桶中看到一个名为CACHE的新文件夹。

404错误听起来像您忘记了以下两个设置:

AWS_S3_ENDPOINT_URL-定义静态标签如何重写img url以指向其在存储桶中的位置。

AWS_S3_CUSTOM_DOMAIN-如果使用自定义域,则与上面相同。

答案 1 :(得分:0)

如所怀疑的,Sorl Thumbnail运行正常,没有问题,问题是用户错误。我在settings.py中错误地配置了MEDIA_ROOT,这导致Sorl Thumbnail试图从不存在的位置检索媒体。