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')