Wei*_* Xu 4 python django easy-thumbnails
我正在项目中使用django easy_thumbnail,我一步一步地按照说明操作.但事实证明,网址不会被退回.
包含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)
Run Code Online (Sandbox Code Playgroud)
在设置中,我指定:
THUMBNAIL_ALIASES = {
'': {
'avatar': {'size': (50, 50), 'crop': True},
},
}
Run Code Online (Sandbox Code Playgroud)
我使用模板过滤器:
<div class="image">
<img src="{{ MEDIA_URL }}{{ project.photo|thumbnail_url:'avatar'}}" class="img-responsive" alt="{{ project.name }}">
</div>
Run Code Online (Sandbox Code Playgroud)
但是,过滤器似乎没有返回任何东西.是因为找不到网址吗?还是其他原因?谢谢你的时间!
问题可能是两件事之一,要么运行wsgi应用程序的用户对生成缩略图的目录没有正确的权限(最有可能),要么Pillow没有正确安装并提供正确的支持.
在我的情况下修复权限是检查用户gunicorn运行的是什么,我检查了gunicorn conf文件并创建了user = www-data这是用户33,然后我将目录更改为存储缩略图的位置,上面的一个目录并创建用户ID 33主人:
chown -R 33:2000 filer_public_thumbnails
Run Code Online (Sandbox Code Playgroud)
现在重启你的应用程序
另一个不太可能的问题是Pillow没有正确的图像支持.
1)卸载枕头
sudo pip uninstall Pillow
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
(Centos的)
sudo yum install python-devel
sudo yum install libjpeg-devel
#Then..
sudo yum install gcc gcc-c++
sudo yum install zlib-devel
Run Code Online (Sandbox Code Playgroud)
并重新安装枕头
sudo pip install Pillow
Run Code Online (Sandbox Code Playgroud)
看看您现在是否拥有合适的支持并重新启动应用服务器.