django项目settings中关于静态资源存放位置的设置
主要涉及以下3项:STATIC_URL、STATICFILES_DIR和STATIC_ROOT
1、STATIC_URL
这项是必须配置的,而且属性值不能为空。默认值是STATIC_URL = '/static/'。
- 如果STATICFILES_DIR没有设置,则只能识别app中static文件夹下的静态资源。即:只能通过http://127.0.0.1:8000/static/1.jpg访问,且static文件夹是放在app中的。
- app中静态文件夹名称必须是static,即STATIC_URL属性的值。如果写其他名称,则不能访问。
- STATIC_URL的值,表示访问静态资源的起始url,如:http://127.0.0.1:8000/static/......
- 如果直接把static文件夹放在项目根目录下,通过上面的网址是不能访问的,除非设置STATICFILES_DIR。
2、STATICFILES_DIR
如果想在项目的根目录下存放静态资源,则需要设置STATICFILES_DIRS属性。该属性的值是列表或元组格式,每个列表(元组)元素代表一个静态资源文件夹,这些文件夹可以自行命名,不必非得是static。
- 如:在项目根目录下建立文件夹public_static,里面放置图片1.jpg,在app(index)中建立文件夹index_static,里面放置2.jpg,都用于存放静态文件。
- 则配置:STATICFILES_DIRS = [os.path.join(BASE_DIR, 'public_static'), os.path.join(BASE_DIR, 'index/index_static'),]
- 访问静态文件的路径是:http://127.0.0.1:8000/static/1.jpg;http://127.0.0.1:8000/static/2.jpg.
综上可见,访问静态资源的路径(起始路径)由STATIC_URL的属性值决定,如果静态文件夹中还有别的文件夹(如test),访问时的路径则是http://127.0.0.1:8000/static/test/1.jpg
3、STATIC_ROOT
它的作用主要是收集整个项目的静态资源,并存放在一个新的文件夹,然后由该文件夹与服务器之间构建映射关系。
- STATIC_ROOT配置如下:STATIC_ROOT = os.path.join(BASE_DIR, 'all_static')