2013-07-24 17 views
14

ho appena iniziare ad utilizzare Django e non ho trovato un sacco di informazioni su come visualizzare un ImageField, così ho fatto questo:Django - Mostra ImageField

models.py

class Car(models.Model): 
    name = models.CharField(max_length=255) 
    price = models.DecimalField(max_digits=5, decimal_places=2) 
    photo = models.ImageField(upload_to='site_media') 

vista .py

def image(request): 
    carx = Car() 
    variables = RequestContext(request,{ 
     'carx':carx 
    }) 
    return render_to_response('image.html',variables) 

image.html

{% extends "base.html" %} 
{% block content %} 
    <img src=carx /> 
{% endblock %} 

ho già salvare un'immagine dal terminale e quello che so è lì, anche se un fare questo in image.html:

{% block content %} 
    {{ carx }} 
{% endblock %} 

L'output è: oggetto Car

Qualcuno può dirmi dov'è il mio errore?

Grazie mille.

risposta

23

Un ImageField contiene un attributo url, che è possibile utilizzare nei modelli per rendere l'HTML corretto.

{% block content %} 
    <img src="{{ carx.photo.url }}"> 
{% endblock %} 
+1

Supponendo c'è un server configurato per servire contenuti da 'site_media', in ogni caso. –

+0

Ho questo in settings.py STATIC_URL = '/ Users/gcarranza/PycharmProjects/django_bookmarks/site_media /' STATICFILES_DIRS = ( '/ Users/gcarranza/PycharmProjects/django_bookmarks/site_media', ) – unixeO

+0

E 'più una questione di avere un vero web server configurato - https://docs.djangoproject.com/en/dev/howto/static-files/#serving-files-uploaded-by-a-user mostra come puoi servirli da Django in fase di sviluppo, ma non è una buona idea in un ambiente di produzione. –

-1

Grazie a tutti, ho risolto in questo modo.

views.py

def image(request): 
carx = Car.objects.all() 
for mycar in carx: 
    MyCar = mycar.photo.url 
variables = RequestContext(request,{ 
    'carx':MyCar 
}) 
return render_to_response('image.html',variables) 

image.html

{% extends "base.html" %} 

{% block content %} 
    <img src="{{ MEDIA_URL }}{{ carx }}"/> 
{% endblock %} 

settings.py

MEDIA_URL = '/Users/gcarranza/PycharmProjects/django_bookmarks/' 
STATIC_URL = '/Users/gcarranza/PycharmProjects/django_bookmarks/site_media/' 
STATICFILES_DIRS = (
'/Users/gcarranza/PycharmProjects/django_bookmarks/site_media',) 

Ora so che carx.photo.url recuperare il percorso assoluto del file e la sua unica questione da caricare come file statico.

2

Puoi anche utilizzare l'URL statico in Settings.py. Crea una directory, ad esempio "Caricamenti", nella directory Statica della tua app. Cambiare anche questo nel modello in models.py.

utilizzare il seguente codice:

<img src="{% static carx.photo.url %}" /> 
Problemi correlati