22

我刚开始使用 django,我还没有找到很多关于如何显示 imageField 的信息,所以我做了这个:

模型.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')

视图.py

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

图像.html

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

我已经保存了一个图像,因为终端并且我知道在那里,如果在 image.html 中执行此操作:

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

输出是:汽车对象

谁能告诉我我的错误在哪里?

非常感谢。

4

3 回答 3

46

AnImageField包含一个url属性,您可以在模板中使用它来呈现正确的 HTML。

{% block content %}
    <img src="{{ carx.photo.url }}">
{% endblock %}
于 2013-07-24T23:07:23.310 回答
3

您还可以使用 Settings.py 中的静态 URL。在应用程序的静态目录中创建一个目录,例如“Uploads”。还要在你的模型中更改它models.py

使用以下代码:

<img src="{% static carx.photo.url %}" />
于 2016-12-13T21:08:15.753 回答
-2

谢谢大家,我以这种方式修复它。

视图.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)

图像.html

{% extends "base.html" %}

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

设置.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 检索文件的绝对路径,唯一的问题是加载为静态文件。

于 2013-07-25T08:48:12.640 回答