我一直在这个圈子里走了几个小时。
我有一个用户配置文件模型profile_pic ImageField。我保存了用户照片,现在我想显示它,但没有任何效果。我经历了文档,SO,谷歌,没有结果。
我上传了一张照片,我可以看到该网址已保存在数据库中。 这是我有:Django - 如何显示保存在ImageField中的照片?
# models.py
class UserProfile(models.Model):
...
title = models.CharField()
about_me = models.CharField()
profile_pic = models.ImageField(upload_to=content_file_name, blank=True)
# views.py
def user_details(request):
if request.method == 'POST':
form = UserProfileForm(request.POST, request.FILES, instance=request.user.get_profile())
if form.is_valid():
form.save()
return HttpResponseRedirect('/')
else:
form = UserProfileForm(instance=request.user.get_profile())
return render_to_response('user_details.html',
{'user': request.user, 'form': form},
context_instance=RequestContext(request))
# user_details.html
{% for field in form %}
{% if field.name != "profile_pic" %}
<!-- display regular fields -->
{{ field.label_tag }}{{ field }}
{% else %}
<!-- display the user photo -->
<img src="{{ MEDIA_URL }}{{ field.url }}" />
{% endif %}
{% endfor %}
当我查看所呈现的HTML源,所有我看到的是MEDIA_URL(即“媒体/”),但没有照片的URL。如果我用{{field}}替换{{field.url}},我会得到带有“Currently”标签的URL,一个“Clear”复选框和一个用于更改图像的选项。但我无法看到图像本身。
任何人都可以建议我做错了什么?
@Crhis,感谢您的回答。但是,这仍然不起作用。现在Django渲染“media/profile_pic”(字段名称,不是实际的图像文件名和路径) – user1102018 2012-03-22 21:00:53
请参阅上面的更新。 – 2012-03-22 21:29:48
再次感谢。它现在有效!我希望有关于包装的详细文档。这样可以节省我数小时的时间来弄清楚我做错了什么。干杯! – user1102018 2012-03-22 21:36:59