【问题标题】:Django Easy Thumbnail not workingDjango Easy Thumbnail 不起作用
【发布时间】:2014-03-18 09:43:16
【问题描述】:

我在一个项目中使用 django easy_thumbnail,我按照说明一步一步地进行操作。 但我发现没有返回 url。

包含 imageField 的模型是:

class Project(models.Model):
   name = models.CharField(max_length=100)
   description = models.CharField(max_length=2000)
   startDate = models.DateField(auto_now_add=True)
   photo = models.ImageField(upload_to="projectimg/", null=True, blank=True)

在设置中,我指定:

    THUMBNAIL_ALIASES = {
    '': {
        'avatar': {'size': (50, 50), 'crop': True},
    },
    }

我使用模板过滤器:

<div class="image">
    <img src="{{ MEDIA_URL }}{{ project.photo|thumbnail_url:'avatar'}}" class="img-responsive" alt="{{ project.name }}">
</div>

但是,过滤器似乎没有返回任何东西。是因为找不到网址吗?还是其他原因?感谢您的宝贵时间!

【问题讨论】:

  • 你不会忘记syncdbmigrate 命令?
  • 没有。我确实迁移了easy_thumbnails,尽管终端显示“没有要迁移的东西”
  • 从文档easy-thumbnails.readthedocs.org/en/latest/usage/… 应该,你不需要用户 {{ MEDIA_URL }} 前缀
  • 我认为这不是 {{MEDIA_URL}} 的问题。问题是“thumbnail_url”过滤器无法获取 url,因为当我检查元素检查器时,{{MEDIA_URL}} 已正确加载,但 {{ project.photo|thumbnail_url:'avatar'}} 为空白。跨度>

标签: python django easy-thumbnails


【解决方案1】:

这个问题有点老了,但我遇到了同样的问题(使用 OS X Mavericks 10.9.2),我会在其中放置 {{ MEDIA_URL }} 并且会显示但第二部分没有。所以我想我会回答这个问题(我在寻找答案时遇到了这个问题)。

第一件事:用户 freylis 对问题发表评论是正确的。你确实不需要需要

{{ MEDIA_URL }}

完全没有。

我做的第一件事就是修改我的 settings.py:

THUMBNAIL_DEBUG = True

这给了我一些调试信息。现在信息具有误导性,因为它告诉我第二部分创建的路径和文件不存在......我可以看到它在服务器端存在。

经过一番挖掘,我了解到也许我需要为我正在使用的图像类型安装库(在命令行上使用自制软件):

brew install libjpeg

完成后,我卸载并重新安装了 Pillow:

pip uninstall Pillow
pip install Pillow --upgrade

我相信“--upgrade”会编译新的库以供它使用(在本例中为 libjpeg),而不是仅使用它第一次安装时已编译的库。

一旦我这样做了,我就可以刷新我的网站并且图片开始显示了。

【讨论】:

    【解决方案2】:

    问题可能是两件事之一,要么是运行 wsgi 应用程序的用户对生成缩略图的目录没有正确的权限(很可能),要么没有正确安装 Pillow正确的支持。

    在我的情况下修复权限是检查用户 gunicorn 运行,我检查了 gunicorn conf 文件并创建了 user=www-data 用户 33,然后我将目录更改为存储缩略图的位置,上面的一个目录和将用户 ID 33 设为所有者:

    chown -R 33:2000 filer_public_thumbnails
    

    现在重新启动您的应用程序。

    另一个不太可能的问题是 Pillow 没有正确的图像支持。

    1) 卸载枕头

    sudo pip uninstall Pillow
    

    2) 安装所有必需的库 (Ubuntu)

     sudo apt-get install libtiff4-dev libjpeg8-dev zlib1g-dev \
     libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev python-tk
    

    (Centos)

    sudo yum install python-devel
    sudo yum install libjpeg-devel
    #Then..
    sudo yum install gcc gcc-c++ 
    sudo yum install zlib-devel
    

    并重新安装 Pillow

    sudo pip install Pillow
    

    看看您现在是否有合适的支持并重新启动您的应用服务器。

    【讨论】:

    • np。如果您使用 uWSGI,同样如此,设置用​​户/组配置属性并从那里进行故障排除。 runserver 在您的 ID 下运行,但我认为如果您将缩略图文件夹的所有者或权限更改为您的 ID 无法写入的内容,则可以复制问题。干杯
    猜你喜欢
    • 2016-04-03
    • 1970-01-01
    • 2012-09-05
    • 2012-08-26
    • 2011-12-31
    • 1970-01-01
    • 2011-09-26
    • 2017-01-06
    • 2021-05-09
    相关资源
    最近更新 更多