12

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

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

4

5 回答 5

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

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

于 2013-08-29T16:38:02.613 回答
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 %}
于 2013-06-03T02:28:07.617 回答
3

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

可能的错误设置: 您如何在设置中定义 STATIC_URL?True另外,DEBUG 的值是多少(如果您在本地开发,请确保将其设置为)?正如@goliney 指出的那样,您的路径可能一团糟。尝试拉出缩略图块,并将图像的 src 设置为{{ STATIC_URL }}/images/empty-news.jpg并在尝试制作缩略图之前验证它是否有效。

忘记加载缩略图:确保在对块{% load thumbnail %}的任何引用之前放入模板。{% thumbnail %}

于 2012-10-18T14:42:50.763 回答
2

我自己也在解决同样的问题。看来,如果您想在模板中使用 STATIC_URL,您需要确保传递给缩略图标签的路径是绝对的(将路径视为外部路径。)

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

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

请参阅: http ://sorl-thumbnail.readthedocs.org/en/latest/examples.html

于 2013-03-27T16:30:28.960 回答
1

为了掩盖更多的丑陋,我制作了一个自定义过滤器,在 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 %}
于 2015-01-02T00:32:52.063 回答