问题 如何缩放静态文件?


我想用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 %}

如果我有图像它显示图像,但当我没有图像我不能使用默认图像,因为缩略图不起作用


12100
2017-10-18 14:17


起源

你确定吗? path 包含图像的有效链接? - Sergey Goliney
这里的简单缩略图理由限于 MEDIA_ROOT  github.com/SmileyChris/easy-thumbnails/issues/210 - Capi Etheriel


答案:


丑陋的选择对我有用,传递你通常会传递到的路径 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 %}

这通过构建静态图像的绝对路径来工作。


7
2017-08-29 16:38



我不认为这适用于其他地方托管的静态资产(例如S3) - Timmy O'Mahony


老实说......这看起来不错;这意味着您的设置可能存在一些简单的错误。

可能的错误设置: 你是如何在你的设置中定义STATIC_URL的?此外,DEBUG的值是什么(确保将其设置为 True 如果你在当地开发)?正如@goliney指出的那样,你的路径可能搞砸了。尝试拉出缩略图块,并将图像的src设置为 {{ STATIC_URL }}/images/empty-news.jpg 并在尝试执行缩略图之前验证是否有效。

忘了加载缩略图: 一定要放 {% load thumbnail %} 在任何引用之前的模板中 {% thumbnail %} 块。


3
2017-10-18 14:42



我的静态网址和缩略图设置都很好。他们工作。我可以缩略图其他图像是dinamic但如果它是静态的,它不起作用。我的静态网址也是正确定义的。 - aysekucuk


以下将有效

{% 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 %}

3
2018-06-03 02:28



这对我不起作用,因为sorl不接受相对URL。我对此进行了调整以接受绝对URL(请参阅本页其他地方的答案)。 - seddonym


我自己也在研究同样的问题。看来,如果你想在模板中使用STATIC_URL,你需要确保传递给thumbnail标签的路径是绝对的(将路径看作是外部路径。)

显然,相对路径仅适用于MEDIA_ROOT中的图像,似乎是为来自模型的图像而设计的。

作为测试,尝试输入完整的http路径。

看到: http://sorl-thumbnail.readthedocs.org/en/latest/examples.html


2
2018-03-27 16:30





为了掩盖我在自定义过滤器中的丑陋,在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 %}

0
2018-01-02 00:32