Django - Display ImageField

Я только начинаю использовать django, и я не нашел много информации о том, как отображать 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')

views.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 %}

Я уже сохраняю изображение с терминала, и я знаю, что есть, также если это сделать в image.html:

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

Вывод: объект автомобиля

Может ли кто-нибудь сказать мне, где моя ошибка?

Большое спасибо.

Ответы

Ответ 1

An ImageField содержит атрибут url, который вы можете использовать в своих шаблонах для отображения надлежащего HTML.

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

Ответ 2

Вы также можете использовать Статический URL-адрес в Settings.py. Создайте каталог, например "Uploads", в каталоге Static вашего приложения. Также измените это в своей модели в models.py.

Используйте следующий код:

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

Ответ 3

Спасибо всем, я исправлю это таким образом.

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

Теперь я знаю, что carx.photo.url возвращает абсолютный путь к файлу и его единственную материю для загрузки в качестве статического файла.