我读了很多关于包含图像文件的内容,但我仍然没有得到它:(
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
非常感谢!
答案 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/