我是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})
然后它会找到图像,但即使我只选择一个图像,它也会显示所有图像。 这一直是我的问题,所以如果有人能帮助我,我真的很感激
答案 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的工作原理......