我想用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 %}
如果我有图像它显示图像,但当我没有图像我不能使用默认图像,因为缩略图不起作用
丑陋的选择对我有用,传递你通常会传递到的路径 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 %}
这通过构建静态图像的绝对路径来工作。
老实说......这看起来不错;这意味着您的设置可能存在一些简单的错误。
可能的错误设置:
你是如何在你的设置中定义STATIC_URL的?此外,DEBUG的值是什么(确保将其设置为 True
如果你在当地开发)?正如@goliney指出的那样,你的路径可能搞砸了。尝试拉出缩略图块,并将图像的src设置为 {{ STATIC_URL }}/images/empty-news.jpg
并在尝试执行缩略图之前验证是否有效。
忘了加载缩略图: 一定要放 {% load thumbnail %}
在任何引用之前的模板中 {% thumbnail %}
块。
以下将有效
{% 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 %}
我自己也在研究同样的问题。看来,如果你想在模板中使用STATIC_URL,你需要确保传递给thumbnail标签的路径是绝对的(将路径看作是外部路径。)
显然,相对路径仅适用于MEDIA_ROOT中的图像,似乎是为来自模型的图像而设计的。
作为测试,尝试输入完整的http路径。
看到:
http://sorl-thumbnail.readthedocs.org/en/latest/examples.html
为了掩盖我在自定义过滤器中的丑陋,在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 %}