Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django缓存-显示从缓存检索的图像时出现问题_Django_Python Memcached - Fatal编程技术网

Django缓存-显示从缓存检索的图像时出现问题

Django缓存-显示从缓存检索的图像时出现问题,django,python-memcached,Django,Python Memcached,我使用的是django 1.4、python 2.7、Memcache、python memcached和easy缩略图 当我尝试使用缓存数据访问项目页面时,出现以下模板错误: Couldn't get the thumbnail uploads/items/item_images/logo.jpeg: 'ImageFieldFile' object has no attribute 'instance' 当我从shell中的数据库访问相关数据时,我得到: >>> log =

我使用的是django 1.4、python 2.7、Memcache、python memcached和easy缩略图

当我尝试使用缓存数据访问项目页面时,出现以下模板错误:

Couldn't get the thumbnail uploads/items/item_images/logo.jpeg: 'ImageFieldFile' object has no attribute 'instance'
当我从shell中的数据库访问相关数据时,我得到:

>>> log = item.get_logo()
>>> logo
<ImageFieldFile: uploads/items/item_images/logo.png>
>>> logo.instance
<Media: uploads/items/item_images/logo.png>
>log=item.get_logo()
>>>标志
>>>logo.instance
当我尝试从缓存访问相同的数据时,我得到:

>>> cache.set('logo',item.get_logo())
>>> logo = cache.get('logo')
>>> logo
<ImageFieldFile: uploads/items/item_images/logo.png>
>>> logo.instance
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'ImageFieldFile' object has no attribute 'instance'
缓存.set('logo',item.get_logo()) >>>logo=cache.get('logo')) >>>标志 >>>logo.instance 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 AttributeError:'ImageFieldFile'对象没有属性'instance'
我的问题是如何缓存
ImageFieldFile
,以便在原始状态下可以检索到它?我需要将该对象传递到我的模板,以便使用简单的缩略图。

因此,我没有尝试缓存
图像字段文件
,而是缓存了
图像字段文件
所在的对象(
媒体
),现在一切正常

数据库:

>>> logo = item.get_logo()
>>> logo
<Media: uploads/items/item_images/logo.png>
>>> logo.image #this is what I was trying to cache before
<ImageFieldFile: uploads/items/item_images/logo.png>
>>> logo.image.instance
<Media: uploads/items/item_images/logo.png>
>>> cache.set('logo',logo)
>>> cachedLogo = cache.get('logo')
>>> logo
<Media: uploads/items/item_images/logo.png>
>>> logo.image
<ImageFieldFile: uploads/items/item_images/logo.png>
>>> logo.image.instance
<Media: uploads/items/item_images/logo.png>
logo=item.get_logo() >>>标志 >>>logo.image#这是我之前试图缓存的内容 >>>logo.image.instance 缓存:

>>> logo = item.get_logo()
>>> logo
<Media: uploads/items/item_images/logo.png>
>>> logo.image #this is what I was trying to cache before
<ImageFieldFile: uploads/items/item_images/logo.png>
>>> logo.image.instance
<Media: uploads/items/item_images/logo.png>
>>> cache.set('logo',logo)
>>> cachedLogo = cache.get('logo')
>>> logo
<Media: uploads/items/item_images/logo.png>
>>> logo.image
<ImageFieldFile: uploads/items/item_images/logo.png>
>>> logo.image.instance
<Media: uploads/items/item_images/logo.png>
缓存.set('logo',logo) >>>cachedLogo=cache.get('logo')) >>>标志 >>>logo.image >>>logo.image.instance
Django在缓存查询集和对象时序列化它们,因为memcached是一个键值存储。我猜它没有序列化图像,可能是因为它是一个字节字符串?你能用id或其他东西作为密钥自己缓存字节字符串吗?@Enrico我研究了你的建议,但没能让它工作。我下面的答案是我目前的解决方案,但我愿意接受其他建议。