2012-10-18 45 views
11

我想調整與SORL縮略圖我的靜態文件,但它不工作如何縮略圖靜態文件?

這裏是我的代碼

{% if not new.photo %} 

{% with path="{{STATIC_URL}}/images/empty-news.jpg" %} 
{% thumbnail path "80x80" crop="center" as im %} 
<a href="#" class="image"><img alt="" src="{{im.url}}" class="frame2"></a> 
{% endthumbnail %} 
{% endwith %} 

{% else %} 
{% thumbnail new.photo "80x80" crop="center" as im %} 
<a href="{% url news_detail new.slug %}" class="image"> 
<img alt="" src="{{im.url}}" class="frame2"></a> 
{% endthumbnail %} 
{% endif %} 

如果我有像它顯示的圖像,但是當我沒有像我不能使用默認的圖像,因爲縮略圖不起作用

+0

你確定'path'包含有效的圖像鏈接嗎? –

+0

這裏是簡單的縮略圖理由被限制爲'MEDIA_ROOT' https://github.com/SmileyChris/easy-thumbnails/issues/210 –

回答

3

老實說......這看起來不錯;這意味着在你的設置中可能有一些簡單的錯誤。

可能的錯誤設置: 您如何在設置中定義STATIC_URL?另外,DEBUG的價值是什麼(如果你在本地開發,請確保它設置爲True)?正如@goliney指出的那樣,你的道路可能會混亂。嘗試拉出縮略圖塊,然後將圖像的src設置爲{{ STATIC_URL }}/images/empty-news.jpg,並在嘗試執行縮略圖之前驗證該圖像是否有效。

忘了裝載縮略圖:確保把{% load thumbnail %}在模板的{% thumbnail %}塊的任何引用之前。

+1

我的靜態網址和縮略圖設置都很好。他們工作。我可以縮略圖的其他圖像,但如果它是靜態的,它不起作用。同時我的靜態url被正確定義。 – aysekucuk

2

我正在通過自己的相同的問題。看起來,如果你想在你的模板中使用STATIC_URL,你需要確保你傳遞給縮略圖標籤的路徑是絕對路徑(將路徑看作是外部路徑)

顯然相對路徑只能工作用於MEDIA_ROOT中的圖像,看似是爲來自模型的圖像設計的。

作爲測試,請嘗試輸入完整的http路徑。

參見: http://sorl-thumbnail.readthedocs.org/en/latest/examples.html

3

下面的工作

{% with STATIC_URL|add:"/images/empty-news.jpg" as path %} 
    {% thumbnail path "80x80" crop="center" as im %} 
     <a href="#" class="image"> 
      <img alt="" src="{{im.url}}" class="frame2"></a> 
    {% endthumbnail %} 
{% endwith %} 
+0

這對我不起作用,因爲sorl不接受相對URL。我調整了它以接受絕對URL(請參閱我在本頁其他地方的答案)。 – seddonym

7

是爲我工作,傳遞,你通常會傳遞給static模板標籤路徑醜選項(請注意,它假定http協議,所以可以改進):

{% with 'http://'|add:request.get_host|add:STATIC_URL|add:image_path as path %} 
    {% thumbnail path "720x306" crop="center" as im %} 
     <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}"> 
    {% endthumbnail %} 
{% endwith %} 

這個工程通過建立絕對路徑靜態圖像。

0

爲了覆蓋多一點我犯了一個自定義過濾器的uglyness,在settings.py SITE_URL使用恆定:

settings.py

[...] 
SITE_URL = "google.it" 
[...] 

templatetags/staticthumb.py

from django.conf import settings 

from django import template 

register = template.Library() 

@register.filter() 
def static_url(value): 
    return ''.join(["http://", settings.SITE_URL, settings.STATIC_URL, value]) 

然後使用它在模板中:

{% load thumbnail staticthumb %} 

{% with image_path|static_url as path %} 
    {% thumbnail path "720x306" crop="center" as im %} 
     <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}"> 
    {% endthumbnail %} 
{% endwith %}