2012-11-29 79 views
0

我正在用sorl-thumbnail和許多遠程圖像(sorl從外部來源加載圖像)運行django應用程序。檢查sorl-thumbnail是否已經緩存了一張圖片

理想情況下,我想檢查一下sorl是否已經在我的模板中緩存了一個圖像,如果沒有,請使用ajax加載圖像。

閱讀中,我發現了一個exist方法,它似乎總是返回true

{% thumbnail item.image "160x200" crop="center" as im %} 
    {% if im.exists %} 
     <img src="{{ im.url }}"> 
    {% else %} 
     <!-- load image with ajax --> 
    {% endif %} 
{% endthumbnail %} 

有沒有我可以用它來檢查,如果一個圖像已經在模板緩存的方法的文檔?

+0

{%thumbnail item.image「160x200」crop =「center」as im%}創建縮略圖(如果它不存在)。在下一行調用exists()將始終返回True,因爲如果它不存在,它最近被創建。 – relekang

+0

這是有道理的。有沒有創建縮略圖對象而不創建實際圖像的方法? 我可以在我的視圖中查詢kv商店。但是,這似乎有點哈克。 – Jannis

+0

可以通過使用sorl.thumbnail.base中的get_thumbnail中的一些代碼來完成。我認爲,如果你使用第32行到第50行,並且根據緩存變量返回True/False,就可以使用該函數。 – relekang

回答

0

我最終爲我的模型使用了一種方法。

這是一些使用昂貴%LIKE%的髒原始sql。

def has_image_cached(self): 
     from django.db import connection 
     cursor = connection.cursor() 
     cursor.execute("SELECT * FROM thumbnail_kvstore WHERE value LIKE %s",['%'+self.imageurl+'%']) 
     row = cursor.fetchone() 
     if row is None: 
      return False 
     return True 
相關問題