【发布时间】:2014-03-28 14:47:41
【问题描述】:
这是我的models.py:
class UserImages(models.Model):
user = models.ForeignKey(User)
photo = models.ImageField(upload_to=get_file_path)
这是我上传图片的视图:
def uploadImageView(request):
if request.method == 'POST':
form = UploadImageForm(request.POST, request.FILES)
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
return redirect('/')
else:
form = UploadImageForm()
return render(request, 'image.html', {'form': form})
这是显示用户图像的视图:
def displayImageView(request):
user = request.user
img = UserImages.objects.filter(Q(user__username=user))
return render(request, "displayImage.html", {"img": img})
这是我的 displayImage.html 模板:
{% load staticfiles %}
{% for image in img %}
<img src="{% static image.photo.url %}" alt="" />
{% endfor %}
当我转到加载模板的 URL 时,它会显示四个图像。我记得在测试uploadImageView的时候,我上传了4张图片给查看器。 Django 保存图像的位置是
/home/images/static
然后我去了那个文件夹并删除了两张图片。然后我刷新了模板页面,它仍然显示 4 个图像而不是两个,所以我认为我必须从实际数据库而不是文件夹中删除它。然后我做了
python manage.py shell
>>> from app.models import UserImages
>>> from django.contrib.auth.models import User
>>> a = User.objects.get(username='testUser')
>>> b = UserImages(user=a)
>>> b
<UserImages: UserImages object>
>>> b.photo
<ImageFieldFile: None>
正如你所见,我上传了 4 张图片的用户只显示了一个 ImageFieldFile。我怎么只能看到一个?
编辑:
我的 UploadImageForm() 就是这样的:
class UploadImageForm(forms.ModelForm):
class Meta:
model = UserImages
fields = ['photo']
【问题讨论】:
标签: django django-models django-templates django-views django-queryset