问题是我得到一个损坏的图像类型。我的代码如下:
在我有 settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
SETTINGS_DIR = os.path.dirname(__file__)
PROJECT_PATH = os.path.join(SETTINGS_DIR, os.pardir)
PROJECT_PATH = os.path.abspath(PROJECT_PATH)
TEMPLATE_DIRS = [os.path.join(PROJECT_PATH, 'templates')]
MEDIA_ROOT = '/home/username/work_station/project1/media/static/pic'
MEDIA_URL = '/media/'
PROJECT_ROOT = os.path.join(os.path.dirname(__file__), '..')
SITE_ROOT = PROJECT_ROOT
STATIC_ROOT = os.path.join(SITE_ROOT, 'static')
我的 models.py
class Image(models.Model):
post = models.ForeignKey(Post)
image = models.ImageField(upload_to='static/pic/', default = None)
description = models.CharField(max_length=100)
def __unicode__(self):
我的观点
class IndexListView(ListView):
template_name = "dashboard.html"
context_object_name = 'latest_pictures'
def get_queryset(self):
return Image.objects.all()
return str(self.image)
我的模板:仪表板.html
{% for latest in latest_pictures %}
{% load staticfiles %}
<div><img src="{{ MEDIA_URL }}{{ latest.image }}"></div>
{% endfor %}
实际上,你的MEDIA_ROOT
应该是
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
和图像文件不是静态文件,它们是媒体文件。
{% for latest in latest_pictures %}
<div><img src="{{ latest.image.url }}"></div>
{% endfor %}
应该足够好。
顺便说一句,upload_to
是media
文件夹下的目的地。 upload_to='static/pic/'
有点误导性的名字。
正如丹尼尔所说,如果您的服务器正确提供媒体文件,那么这应该可以工作。