请帮助解决问题。
我有这样的代码。有用: 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 :(得分: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>
用户上传的媒体文件通常存储在媒体目录中(非静态)。
答案 1 :(得分:0)
您不需要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来验证上传的文件实际上是图像。