Django笔记:导入静态文件、媒体文件

问题:

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。