2012-11-29 6 views
0

django 1.4, python 2.7, Memcache, python-memcached 및 쉬운 축소판을 사용하고 있습니다. 내가 캐시 된 데이터를 사용하여 항목 페이지에 액세스하려고하면장고 캐시 - 캐시에서 가져온 이미지 표시 문제

나는 다음과 같은 템플릿 오류 : 나는 쉘의 데이터베이스에서 문제의 데이터에 액세스 할 때

Couldn't get the thumbnail uploads/items/item_images/logo.jpeg: 'ImageFieldFile' object has no attribute 'instance' 

내가 얻을 :

>>> log = item.get_logo() 
>>> logo 
<ImageFieldFile: uploads/items/item_images/logo.png> 
>>> logo.instance 
<Media: uploads/items/item_images/logo.png> 
내가 캐시에서 동일한 데이터에 액세스하려고하면

내가 얻을 :

>>> 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' 

내 문제는 시간이다 원래 상태로 검색 할 수 있도록 ImageFieldFile을 캐시합니까? 쉬운 미리보기 이미지와 함께 사용하기 위해 템플릿에 해당 객체를 전달해야합니다.

+0

장고 검색어 세트와 개체를 직렬화한다. 내 생각 엔 바이트 문자열이기 때문에 이미지를 직렬화하지 못할 수도 있습니다. 당신은 자신이 id 나 something을 키로 사용하여 바이트 문자열을 캐시 할 수 있습니까? – Enrico

+0

@Erico 귀하의 제안을 검토 한 결과 작동하지 못했습니다. 아래의 내 답변은 현재의 솔루션이지만 다른 제안이 열려 있습니다. – Clayton

답변

2

ImageFieldFile을 캐시하려고하는 대신 ImageFieldFile이있는 객체 (Media)를 캐시 했으므로 이제 모든 것이 작동합니다.

데이터베이스 :

>>> 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> 

캐시 : memcached를이 키 값을 저장하기 때문에 당신이 그들을 캐시 할 때

>>> 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> 
관련 문제