2014-03-26 174 views
0

请帮助解决问题。如何显示缩略图?

我有这样的代码。它的工作原理: models.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) 

template.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模块,并编写以下代码。 template.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链接导致不通)。

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

回答

0

这里你情况的一个例子:

<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

Mediafiles用户通常保存在媒体目录(而不是静态)上传。

0

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

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

此外,对于链接到原始图像,你应该用你upload_to配置使用的FileField,它会给你一个绝对路径的文件url财产,实际上和还有你的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的。