2013-07-24 13 views
14

i po prostu zacząć używać Django i nie znalazłem wiele informacji na temat sposobu wyświetlania ImageField, więc zrobiłem to:Django - Wyświetlacz 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') 

odsłon .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 %} 

już zapisać obrazu, gdyż zacisk i wiem, że jest tam również, czy to zrobić w image.html:

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

ouput jest: Przedmiotem samochodów

ktoś może mi powiedzieć, gdzie jest mój błąd?

Wielkie dzięki.

Odpowiedz

23

Atrybut ImageField zawiera atrybut url, który można wykorzystać w szablonach do renderowania odpowiedniego kodu HTML.

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

Zakładając, że to serwer skonfigurowany do obsługi treści z 'site_media', w każdym razie. –

+0

mam to w settings.py STATIC_URL = '/ Users/gcarranza/PycharmProjects/django_bookmarks/site_media /' STATICFILES_DIRS = ( '/ Users/gcarranza/PycharmProjects/django_bookmarks/site_media', ) – unixeO

+0

To więcej pytanie o skonfigurowanie rzeczywistego serwera WWW - https://docs.djangoproject.com/en/dev/howto/static-files/#serving-files-uploaded-by-a-user pokazuje, jak możesz im służyć z Django w rozwoju, ale nie jest to dobry pomysł w środowisku produkcyjnym. –

-1

Dzięki wszystkim naprawię to w ten sposób.

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',) 

teraz wiem, że carx.photo.url odzyskać bezwzględną ścieżkę do pliku a jego jedyną sprawą jest ładowanie jako plik statyczny.

2

Można również użyć statycznego adresu URL w pliku Settings.py. Utwórz katalog, na przykład "Przesyłanie", w katalogu ze statycznymi aplikacjami. Zmień to również w swoim modelu w models.py.

Użyj następującego kodu:

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