He estado dando vueltas en círculos durante horas con esto.
Tengo un modelo de perfil de usuario con profile_pic ImageField. Guardé la foto del usuario y ahora quiero mostrarla, pero nada funciona. Revisé documentos, SO, google, sin resultado.
Cargué una foto, y puedo ver que la url se guardó en la base de datos. Esto es lo que tengo:Django: ¿cómo puedo mostrar una foto guardada en 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 %}
Cuando veo la fuente del HTML representado, todo lo que veo es el MEDIA_URL (es decir, 'los medios de comunicación /'), pero no la URL de la foto. Si reemplazo {{field.url}} con {{field}} obtengo la URL con la etiqueta "Actualmente", una casilla de verificación "Borrar" y una opción para cambiar la imagen. Pero no puedo ver la imagen en sí.
¿Alguien puede sugerir qué estoy haciendo mal?
@Crhis, gracias por la respuesta. Sin embargo, esto todavía no está funcionando. Ahora Django representa "media/profile_pic" (el nombre del campo, no el nombre de archivo de la imagen real y la ruta) – user1102018
Ver la actualización anterior. –
gracias de nuevo. ¡Ahora funciona! Ojalá hubiera algunos documentos completos sobre el envoltorio. Esto me habría ahorrado horas tratando de descubrir qué estaba haciendo mal. ¡Aclamaciones! – user1102018