Django笔记:导入静态文件、媒体文件
问题:
Django服务启动后,网页上加载不了静态文件、样式或者媒体图片等。
[01/Nov/2018 11:38:14] "GET /media/goods/images/2_20170719161414_628.jpg HTTP/1.1" 404 2060
[01/Nov/2018 11:38:14] "GET /media/goods/images/2_20170719161405_249.jpg HTTP/1.1" 404 2060
[01/Nov/2018 11:38:14] "GET /media/goods/images/2_20170719161435_381.jpg HTTP/1.1" 404 2060
方法:
首先确定项目中已经有静态文件文件夹static
或者media
# 项目文件下的settings.py添加
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
# 相同位置urls.py
from django.conf.urls import url
from vueshop.settings import MEDIA_ROOT
from django.views.static import serve
urlpatterns = [
# 。。。。。。
url(r'^media/(?P<path>.*)$', serve,{"document_root": MEDIA_ROOT}),
]
补充:
DEBUG为 True
时django会默认帮我们处理静态文件,False
则不是。
同样需要:
# urls.py
urlpatterns = [
# 。。。。。。
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', { 'document_root': settings.STATIC_ROOT,
}),
]
# settings.py
STATIC_ROOT = os.path.join(BASE_DIR, "static")
# STATIC_ROOT是Django 1.3新增的特性,保存在这个目录里面文件被当成静态文件处理
Django提供了一个方法自动地将所有的静态文件放在一起,把/static/
映射到STATIC_ROOT,布署到生产环境的时运行manage.py collectstatic
自动地STATICFILES_DIRS列出的目录以及各个App下的static子目录的所有文件复制到STATIC_ROOT。