2013-06-20 53 views
1

爲什麼thumbnail模板標籤不適用於下面詳述的設置?Django solr-thumbnail redis配置

Django的項目以這種方式配置(相關文件的摘錄):

settings.py(摘錄)

INSTALLED_APPS = (
    .. 
    'sorl.thumbnail', 
    .. 
) 

.. 

# solr-thumbnail related settings 
THUMBNAIL_FORMAT = 'PNG' 
THUMBNAIL_KVSTORE = 'sorl.thumbnail.kvstores.redis_kvstore.KVStore' 
THUMBNAIL_REDIS_HOST = 'localhost' # default 
THUMBNAIL_REDIS_PORT = '6379' # default 

models.py

from django.db import models 
from sorl.thumbnail import ImageField 

class UserProfile(models.Model): 
    email = models.EmailField() 
    profile_pic = ImageField(upload_to='user_profile_imgs') 

views.py(提取物)

form = NewUserForm(request.POST, request.FILES) 
if form.is_valid(): 
    user_inst = UserProfile(
     email=form.cleaned_data['email'], 
     profile_pic=request.FILES['image'] 
    ) 
    user_inst.save() 
    return .. 

HTML模板(摘錄)

<p>Actual image</p> <!-- THIS WORKS --> 
<img src="{{ user.profile_pic.url }}" alt="user profile pic"> 

<p>Cropped image</p> <!-- THIS DOES NOT WORK --> 
{% thumbnail user.profile_pic "100x100" crop="smart" as im %} 
    <img src="{{ im.url }}" alt="user profile pic 100 by 100"> 
{% endthumbnail %} 

裁剪的圖像無法正常工作;根據sorl-django workflow,如果沒有找到我配置的Redis緩存中的密鑰,則應該創建新請求的映像。實際上,在檢查時,redis緩存根本沒有任何項目:

redis 127.0.0.1:6379> KEYS * 
(empty list or set) 

因此,sorl-thumbnail甚至沒有在redis上創建密鑰。我無法弄清楚問題所在,因爲我什麼都不例外。我有感覺我錯過了某個步驟。 (通過蛋黃)

相關的Python包版本:

Django   - 1.5.1  - active 
Pillow   - 2.0.0  - active 
redis   - 2.7.6  - active 
sorl-thumbnail - 11.12  - active 

回答

1

當模板不工作應該加上:

THUMBNAIL_DEBUG = True 

的設置文件,然後有用例外,爲什麼將會生成thumbnail模板標籤不工作。 (強烈建議禁用此設置生產。)

然後我不得不做2個修復得到上述工作:

第一:改變

THUMBNAIL_REDIS_PORT = '6379' 

整數:

THUMBNAIL_REDIS_PORT = 6379 

二:改變圖像參數的thumbnail標籤是圖片的網址,而不是簡單地ŧ他的圖像和裁切模式爲「中心」,而不是「聰明」,即我改變:

{% thumbnail user.profile_pic "100x100" crop="smart" as im %} 
    <img src="{{ im.url }}" alt="user profile pic 100 by 100"> 
{% endthumbnail %} 

到:

{% thumbnail user.profile_pic.url "100x100" crop="center" as im %} 
    <img src="{{ im.url }}" alt="user profile pic 100 by 100"> 
{% endthumbnail %} 

這做到了!儘管如此,我仍然想使用smart cropping;如果您對此有任何建議,請添加答案/評論。謝謝。