static 静态文件夹

settings.py的配置

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")
]

django项目我们默认把js和css文件都放在根目录的static目录下

media 配置

media 一般对应的是我们model字段ImageField的up_load参数,settings.py 配置

# Django用户上传的都叫media文件
MEDIA_URL = "/media/"
# media配置,用户上传的文件都默认放在这个文件夹下
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

url.py 文件需要加上一句

from django.views.static import serve
from django.conf import settings

url(r'^media/(?P<path>.*)$', serve, {"document_root": settings.MEDIA_ROOT}),

前端html使用

<img class="media-object author-img" src="/media/{{ article.user.avatar }}" alt="...">

models.py使用
avatar = models.FileField(upload_to="avatars/", default="avatars/default.png", verbose_name="头像")
就算根目录的media没有avatars,django也会帮我们自动创建avatars目录,数据库字段存的值是avatars/htest.png
注意,当我们没有使用django media的时候,会在根目录创建avatars目录,数据库字段存的值仍然是avatars/htest.png
提问:为什么要有media,因为前端需要拿到上传的图片,我们当然可以放到static目录里。但是,static放的是我们服务器开发的静态文件,
media存放的是前端上传的文件,应该严格区分。在settings.py加了还需要加url,类比static,因为static是django已经帮我们配置了url,media不会帮我们配置,因为media可能是不需要的