2013-07-24 41 views
14

tôi chỉ bắt đầu sử dụng django và tôi đã không tìm thấy rất nhiều thông tin về làm thế nào để hiển thị một imageField, vì vậy tôi thực hiện điều này:Django - Hiển thị 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') 

lần xem 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 %} 

tôi đã tiết kiệm được một hình ảnh từ thiết bị đầu cuối và tôi biết là ở đó, còn nếu một làm điều này trong image.html:

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

Các ouput là: đối tượng Car

bất cứ ai có thể cho tôi biết đâu là lỗi của tôi?

Cảm ơn rất nhiều.

Trả lời

23

An ImageField chứa thuộc tính url, bạn có thể sử dụng thuộc tính này để tạo HTML phù hợp.

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

Giả sử có một máy chủ được cấu hình để phục vụ nội dung từ 'site_media', anyway. –

+0

Tôi có điều này trong settings.py STATIC_URL = '/ Users/gcarranza/PycharmProjects/django_bookmarks/site_media /' STATICFILES_DIRS = ( '/ Users/gcarranza/PycharmProjects/django_bookmarks/site_media', ) – unixeO

+0

Đó là chi tiết một câu hỏi về việc có một máy chủ web thực được cấu hình - https://docs.djangoproject.com/en/dev/howto/static-files/#serving-files-uploaded-by-a-user cho thấy cách bạn có thể phục vụ chúng từ Django trong phát triển, nhưng đó không phải là ý tưởng hay trong môi trường sản xuất. –

-1

Nhờ tất cả, tôi khắc phục theo cách này.

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

Bây giờ tôi biết rằng carx.photo.url lấy đường dẫn tuyệt đối của tập tin và vấn đề duy nhất của nó để tải dưới dạng tệp tĩnh.

2

Bạn cũng có thể sử dụng URL tĩnh trong Settings.py. Tạo một thư mục ví dụ "Tải lên", trong thư mục tĩnh của ứng dụng của bạn. Cũng thay đổi điều này trong mô hình của bạn trong models.py.

Sử dụng đoạn mã sau:

<img src="{% static carx.photo.url %}" /> 
Các vấn đề liên quan