【发布时间】:2013-04-18 06:38:03
【问题描述】:
我正在本地机器上使用 Django(1.5.1) 构建画廊。在我的专辑模型中,我有一个 ImageField。有一个视图可以显示相册的所有图像。它运作良好,但最后图像不显示。如您所见,图像有边框,但无法加载图像。
截图
models.py
class Category(models.Model):
###
class Album(models.Model):
category = models.ForeignKey(Category, related_name='albums')
###
class Image(models.Model):
album = models.ForeignKey(Album)
image = models.ImageField(upload_to = 'images/albums/')
views.py
def detail(request, album_id):
album = get_object_or_404(Album, pk=album_id)
return render(request, 'gallery/detail.html', {'album': album})
detail.html
<h1>{{ album.title }}</h1>
{% for image in album.image_set.all %}
<a> <img src="{{ image.image.url }}" height="420"></a>
{% endfor %}
如果这是我的相册地址:http://localhost:8000/gallery/1/
那么图片网址为:http://localhost:8000/media/images/albums/photo_4.JPG (I get 404 when enter it in browser)
此媒体根目录和网址:
MEDIA_ROOT = '/media/'
MEDIA_URL = '/localhost:8000/media/'
我的媒体根有 777 权限。
我现在该怎么办?问题出在哪里?
【问题讨论】:
-
似乎服务器在请求图像时返回了 Not Found 响应。您可以在浏览器中检查图像元素并发布图像
src属性中的地址是什么? -
用有关 url 和 root 设置的更多信息编辑了我的问题。
-
这很奇怪,应该是
/media/images/albums/photo_4.jpg。尝试手动在浏览器中输入此地址http://localhost:8000/media/images/albums/photo_4.jpg并查看它是否显示图像。那应该是正确的地址。同样在代码中,编写img标记,如<img src="/{{ image.image.url }}" height="420">,在url 前使用斜杠字符。好的,看看这是否可行。 -
localhost:8000/media/images/albums/photo_4.jpg url 不显示图片。我收到 404 错误。但是 img 标签中的“/”是个好主意。 URL 似乎是正确的。但无法加载静止图像。
-
您尝试过我的回答吗?
MEDIA_ROOT='/media/'
标签: python django image django-templates django-models