目标是在个人资料页面上显示用户图片。我得到的当前错误消息是"'图像'对象不可迭代"。
views.py
def view_profile(request, pk=None):
if pk:
user = User.objects.get(pk=pk)
else:
user = request.user
args = {'user': user, 'images': Images.objects.get(pk=pk)}
return render(request, 've/cp/profile.html', args)
profile.html
{% if images %}
{% for img in images %}
<img src="{{ img.image.url }}" class="float-left" style="max-width: 150px">
{% endif %}
{% else %}
models.py
class Images(models.Model):
image = models.ImageField(upload_to='profile_image', null=True, default='profile_image/none/no-img.png')
user = models.ForeignKey(User, on_delete=models.CASCADE, null=False)
答案 0 :(得分:1)
{% if images %}
<img src="{{ img.image.url }}" class="float-left" style="max-width: 150px">
{% else %}
// other code
{% endif %}
当您使用的get
没有返回queryset
时,因此它不是iterable
如果您使用过filter
,那么for loop
就会发生
答案 1 :(得分:1)
您需要将get
替换为filter
以返回图像查询集,而不是传递给上下文单个对象的图像列表。而不是按id
进行过滤,您需要使用user_id
来获取所有用户的文件:
args = {'user': user, 'images': Images.objects.filter(user_id=user.id)}
return render(request, 've/cp/profile.html', args)