页面未找到404 Django媒体文件

时间:2016-03-29 09:14:36

标签: python django django-settings django-media

我可以将文件上传到我在'/peaceroot/www/media/'中设置的媒体文件夹(settings.py),如下所示

MEDIA_ROOT = '/peaceroot/www/media/'
MEDIA_URL = '/media/'

但是通过管理员我试图访问上传的图片文件

http://localhost:8000/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg

然后我收到404错误。

该文件存在于peaceroot/www/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg

6 个答案:

答案 0 :(得分:46)

在项目urlpatterns中添加媒体网址条目:

from django.conf.urls.static import static
from django.conf import settings

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

答案 1 :(得分:8)

MEDIA_ROOT更好的方法是,

尝试在移动项目时使媒体路径动态变得容易。

Settings.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__))


MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
MEDIA_URL = '/media/'

urls.py

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

看看这个

https://docs.djangoproject.com/en/dev/howto/static-files/

答案 2 :(得分:1)

添加:如果其他答案对您不起作用,请尝试将静态网址放在其他网址之前。像这样:

urlpatterns = static(...) + [...]

可能发生的情况是列表中的某些模式会阻止请求到达静态处理程序。因此,首先使用静态处理程序解决了这个问题。为我工作。

答案 3 :(得分:0)

在我的开发服务器中,通过注释掉settings.py中的这些行来修复了该问题

STATICFILES_DIRS = (
     os.path.join(BASE_DIR, 'static'),
)

答案 4 :(得分:0)

在模板中通过锚标记创建链接并在最后添加 .url 到该文件对象 例如

{% for post in post %}

   <a href="{{post.imagefilename.url}}" > 

{% endfor %}

答案 5 :(得分:0)

这是服务器错误。我假设您正在使用 Nginx。只需将其添加到您的 Nginx 配置文件(/etc/nginx/sites-available/example.com)中,就在位置 /static/

location /media/ {
    root /home/user/myprojectdir;
}

这里,user 应该是您创建的用户名myprojectdir 应该是您的项目目录。 >