2012-10-18 24 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 %}