4

我在一个项目中使用 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>

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

4

2 回答 2

5

问题可能是两件事之一,要么是运行 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

并重新安装枕头

sudo pip install Pillow

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

于 2014-09-03T03:44:31.333 回答
3

这个问题有点老了,但我遇到了同样的问题(使用 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),而不是仅使用它在第一次安装时所拥有的编译库。

一旦我这样做了,我就能够刷新我的网站,并且图片开始出现。

于 2014-04-23T13:44:34.430 回答