【问题标题】:how to display thumbnails?如何显示缩略图?
【发布时间】:2023-03-31 12:41:01
【问题描述】:

请帮助解决问题。

我有这样的代码。有用: 模型.py:

class Drt(models.Model):
    title = models.CharField(max_length=100)
    date = models.DateField()
    image = models.FileField(upload_to='avtos/static/uploads/')

    @classmethod
    def get_all_entries(self):
        return self.objects.all()

    @property
    def image_name(self):
        return os.path.basename(self.image.name)

模板.html:

{% load staticfiles thumbnail %}

<div class="list">
    {% for entrie in all_entries_avtopark %}
        <a class="fancybox" href='static/uploads/{{ entrie.image_name }}'>
        {% thumbnail entrie.image "204x127" crop="center" as im %}
            <img class="" alt="{{ entrie.title }}" src='static/uploads/{{ entrie.image_name }}' width="204" height="127" />
        {% endthumbnail %}  
        </a>
    {% endfor %}
</div>  

我想应用 sorl.thumbnail 模块并编写以下代码。 模板.html:

<div class="list">
    {% for entrie in all_entries_avtopark %}
        <a class="fancybox" href='static/uploads/{{ entrie.image_name }}'>
        {% thumbnail "static/uploads/{{ entrie.image_name }}" "204x127" crop="center" as im %}
            <img class="" alt="{{ entrie.title }}" src='{{ im.url }}' />
        {% endthumbnail %}  
        </a>
    {% endfor %}
</div>  

不显示生成的图像(src 链接无处可去)。

请告诉我如何打印缩略图静态文件?

【问题讨论】:

    标签: python django thumbnails


    【解决方案1】:

    这里是你的例子:

    <div class="list">
        {% for entrie in all_entries_avtopark %}
            <a class="fancybox" href='/media/{{ entrie.image }}'>
            {% thumbnail entrie.image "204x127" crop="center" as im %}
                <img class="" alt="{{ entrie.title }}" src='{{ im.url }}' />
            {% endthumbnail %}  
            </a>
        {% endfor %}
    </div>  
    

    和文档link for sorl thumbnail

    用户上传的媒体文件通常存储在media目录中(不是静态的)。

    【讨论】:

      【解决方案2】:

      您不需要image_name 方法。 sorl-thumbnail templatetag 知道如何处理 FileFields。所以这应该有效:

      {% thumbnail entrie.image "204x127" crop="center" as im %}
          <img class="" alt="{{ entrie.title }}" src='{{ im.url }}' />
      {% endthumbnail %}
      

      另外,对于原始图像的链接,您应该使用 FileField 的 url 属性,这将为您提供文件的绝对路径,实际上使用您的 upload_to 配置和您的 MEDIA_URL 配置。

      <div class="list">
          {% for entrie in all_entries_avtopark %}
              <a class="fancybox" href="{{ entrie.image.url }}">
              {% thumbnail entrie.image "204x127" crop="center" as im %}
                  <img class="" alt="{{ entrie.title }}" src='{{ im.url }}' />
              {% endthumbnail %}  
              </a>
          {% endfor %}
      </div>
      

      顺便说一句,如果您知道您将始终将图像存储在该字段中,那么使用 ImageField 来验证上传的文件实际上是图像可能会更好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-14
        • 2011-05-07
        • 1970-01-01
        • 2011-03-25
        • 2019-07-11
        • 2011-02-21
        • 1970-01-01
        • 2013-01-29
        相关资源
        最近更新 更多