首先我们先搞清楚static目录和media目录的区别。
静态文件指像css,js,图片之类的文件,在Django里面静态文件的处理与一般的视图是不一样的。
静态文件的处理主要包括STATIC和MEDIA两类,Django中的定义是:
MEDIA:指用户上传的文件。
STATIC:主要指的是如css、js、jq、vue、图片等文件。
一、MEDIA_ROOT和MEDIA_URL
(1)MEDIA_ROOT:media_root可以理解为用户上传文件的绝对路径。在项目中,我们在setting.py文件对他进行设置,一般是这样的
(2)MEDIA_URL:MEDIA_URL是指从浏览器访问时的地址前缀,一般是这样的
可以随便设置一个
二、static_root 和 static_url
STATIC主要指的是如css、js、图片这样的文件,在settings里面配置STATIC_ROOT和STATIC_URL,配置方式与MEDIA_ROOT是一样的,但是要注意:
STATIC_ROOT与MEDIA_ROOT位置不能一样。
你懂我意思吧
STATIC文件一般保存在以下位置:
(1)STATIC_ROOT:在settings里面设置,一般用来放一些公共的js、css等
(2)app的static文件夹,在每个app所在文夹均可以建立一个static文件夹,然后当 运行collectstatic时,Django会遍历INSTALL_APPS里面所有app的static文件夹,将 里面所有的文件复制到STATIC_ROOT。因此,如果你要建立可复用的app,那么你要将该app所需要的静态文件放在static文件夹中。
也就是说一个项目引用了很多app,那么这个项目所需要的css,images等静态文件是分散在各个app的static文件的
当你要发布时,需要将这些分散的static文件收集到一个地方就是STATIC_ROOT
(3)STATIC文件还可以配置STATICFILES_DIRS,指定额外的静态文件存储位置。
STATICFILES_DIRS = ( os.path.join(HERE, "../app名字/static/").replace('\\', '/'), )
和static_root的路径不要重合!
以上