在Django Template Site上显示图像

时间:2015-06-08 15:18:41

标签: python django image static

我读了很多关于包含图像文件的内容,但我仍然没有得到它:(

my models.py

class Movie(models.Model):
    image_url = models.URLField(max_length=1024, blank=True, null=True)
    image_file = models.ImageField(upload_to='poster/', blank=True)

我的index.html

{% load staticfiles %}
<img src="{% static "{{movie.image_file}}" %}" />

图片保存在harddisk / myapp / poster

感谢您的帮助。

知道了!

<img src="
    {% if movie.image_file %}
        {{ movie.image_file.url }}
    {% else %}
        another-image.jpg
    {% endif %}"
/>

urls.py

+static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.py

added MEDIA_URL

非常感谢!

2 个答案:

答案 0 :(得分:1)

你只需要这样做:

<img src="{{ movie.image_file.url }}" />

用户上传的文件会转到模型字段中的MEDIA_ROOT + upload_to参数,该参数通常是使用{% static %}模板标记时提供静态文件的不同位置。

由于您的字段允许blank=True,您可以使用条件来显示不同的图像,或者根本不显示图像:(添加空格以避免换行)

<img src="
    {% if movie.image %}
        {{ movie.image_file.url }}
    {% else %}
        another-image.jpg
    {% endif %}"
/>

或者,您可以添加执行相同操作的模型属性,或者您可以将整个图像标记包装在if语句中,以便在字段为空时隐藏它。

答案 1 :(得分:1)

设置MEDIA_ROOT并在urls.py末尾添加以下行 +static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

实施例:

urlpatterns = patterns('',
    url(r'^$', views.index, name='Index'),
    url(r'^admin/', include(admin.site.urls)),
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns = patterns('', url(r'^$', views.index, name='Index'), url(r'^admin/', include(admin.site.urls)), ) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

在img src中写

这仅适用于开发。 请参阅https://docs.djangoproject.com/en/1.8/howto/static-files/