【问题标题】:Django - Why pictures are not servedDjango - 为什么不提供图片
【发布时间】:2016-02-07 19:23:57
【问题描述】:

这是我的项目结构:

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

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

我的设置.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)

尽管有图片:

我做错了什么?提前致谢

编辑 如果有帮助:

  • 我使用的是 django 1.8

【问题讨论】:

  • 尝试使用:src="{{ img.pic }}"
  • @TonyKyriakidis 那行不通
  • DEBUG = Truestatic() 在不处于调试模式时是无操作的。旁注:default=... 在我看来是错误的,上传的文件路径是相对于媒体根目录存储的(以便您以后可以移动它),所以绝对路径不会削减它。
  • @dhke,DEBUG=Truedefault=在这里没用,因为图片上传了。
  • 确保您将static() 添加到根 urls.py,而不是另一个。

标签: python django static media


【解决方案1】:

确保您已将此行添加到您的 root url 配置中。

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

如果你有,例如,

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

然后你在那里添加static(),然后Django 会添加一个url 模式来提供/blog/^media/ 的媒体文件。由于^,这甚至不会使/blog/media/ 上的文件可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2012-07-20
    • 1970-01-01
    相关资源
    最近更新 更多