Django - 为什么不提供照片

时间:2016-02-07 19:23:57

标签: python django static media

这是我的项目结构:

enter image description here

我需要在将图片加载到模板中之前上传图片(通过管理界面)。

我发现了许多关于同一问题的帖子,我按照答案中描述的相同步骤进行了操作:

我的settings.py:

 DEBUG = True
 MEDIA_URL = '/media/'
 MEDIA_ROOT = os.path.join(BASE_DIR,'media')

我的urls.py:

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

我的models.py:

class Image_blog(models.Model):
    pic = models.ImageField(upload_to = 'blog')
    entry = models.ForeignKey(Entry,related_name='images')
    ...

最后,在模板中:

                    <div class="col-md-5">
                        <a href="blog-post.html">
                        {% for img in entry.images.all %}
                            <img class="img-responsive img-hover" src="{{ img.pic.url }}" alt="">
                        {% endfor %}
                        </a>
                    </div>

我遇到此错误的问题:

 GET http://localhost:8000/media/blog/django.png 404 (NOT FOUND)

尽管如此:

enter image description here

我做错了什么?提前致谢

修改 如果它可以帮助:

  • 我正在使用django 1.8

1 个答案:

答案 0 :(得分:4)

确保已将此行添加到 root 网址配置。

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

例如,如果你有

url(r'^blog/', include('blog.urls')),

然后在那里添加static(),然后Django将添加一个url模式来提供/blog/^media/的媒体文件。由于/blog/media/

,这甚至不会使文件在^处可用