Python - 在Django中显示图像

时间:2017-04-05 07:38:53

标签: python django image

我是django的新手,我正在尝试创建项目,但是我遇到了显示图片的问题。我有一个带复选框的html表,在选择了一个对象后,我希望在下一页显示图像,但我只能得到破碎的图像。

我可以这样显示图像:

<img src="{{ MEDIA_URL }}bird.png" class="img-responsive" style="width: 60px; height:80px; margin:auto;" />

但显然这个图像将显示在每个对象中。 但是这样我在索引页面中使用它就找不到任何图像:

<img src="{{ tags.tag_image.url }}" class="img-responsive" style="width: 60px; height:80px; margin:auto;" />

这是我的views.py

def selected(request):
    tags = request.GET.getlist('selected')
    return render(request, 'tag/selected.html', {'all_tags':tags})

如果我使用:

def selected(request):
    tags = request.GET.getlist('selected')
    all_tags = Tags.objects.all
    return render(request, 'tag/selected.html', {'tags':tags, 'all_tags':all_tags})

然后它会找到图像,但即使我只选择一个图像,它也会显示所有图像。 这一直是我的问题,所以如果有人能帮助我,我真的很感激

1 个答案:

答案 0 :(得分:0)

我会试着正确地解释你的问题!但告诉我,如果我错了:

你的标签模型看起来像这样:

class Tags(models.Model):
    tag_image = models.ImageField(upload_to='/somewhere')
    ...

如果您只想获得所选的几个,请在您的视图中执行以下操作:

def selected(request):
    tag_ids = request.GET.getlist('selected')
    selected_tags = Tags.objects.filter(id__in=tag_ids)
    return render(request, 'tag/selected.html', {'tags': selected_tags})

然后,在你的模板中,你需要这样的东西:

{% for tag in tags %}
<!-- tag is a single tag in this context -->
<img src="{{ tag.tag_image.url }}" class="img-responsive" style="width: 60px; height:80px; margin:auto;" />
{% endfor %}

希望有助于澄清Django的工作原理......