我一直在這個圈子裏走了幾個小時。
我有一個用戶配置文件模型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