STATIC_URL、STATIC_ROOT、STATICFILES_DIRS三者區別


一、STATIC_URL

作用是通過url直接訪問在項目中的靜態文件。

二、STATIC_ROOT

  1.   #the dir for command "python manage.py collectstatic" 
  2. STATIC_ROOT = os.path.join(BASE_DIR, "collect_static")
  3.   #locate the common static files
  4.   STATICFILES_DIRS = [
  5.  os.path.join(BASE_DIR, 'common_static')
  6.  ]

部署django項目的時候需要用到STATIC_ROOT ,它是收集所有的靜態文件並放在一個目錄里,即STATIC_ROOT指向的目錄里。

執行完python manage.py collectstatic后,將靜態文件復制到STATIC_ROOT指定的目錄中。

 

三、STATICFILES_DIRS

STATIC_ROOT 是在部署的時候才發揮作用, 而實際情況下,靜態文件的一般安放位置有兩種:

1、在每個app里面新建一個static文件夾,將靜態文件放到里面,在加載靜態文件時,比如要在模板中用到靜態文件,django會自動在每個app里面搜索static文件夾。

所以,不要把文件夾的名字寫錯哦, 否則django就找不到你的文件夾了。

2、在所有的app文件外面,建立一個公共的文件夾, 因為有些靜態文件不是某個app獨有的,那么就可以把它放到一個公共文件夾里面,方便管理。

注意,建立一個公共的靜態文件的文件夾只是一種易於管理的做法,但是不是必須的,app是可以跨app應用靜態文件的,因為最后所有的靜態文件都會在STATIC_ROOT里面存在。

那現在的問題是如何讓django知道你把一些靜態文件放到app以外的公共文件夾中呢,那就需要配置STATICFILES_DIRS了

  1.  STATICFILES_DIRS = (
  2.   os.path.join(BASE_DIR, 'common_static'),
  3.  )

STATICFILES_DIRS告訴django,首先到STATICFILES_DIRS里面尋找靜態文件,其次再到各個app的static文件夾里面找。

注意, django查找靜態文件是惰性查找,查找到第一個,就停止查找了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM