django3開發環境和生產環境中的static

django3對於開發環境和生產環境的static文件存放位置有不同的規定。
假設有一個django3項目:lffdc,他的主目錄會有兩層:lffdc/lffdc

一、設置訪問URL
需要在:lffdc/lffdc/settings.py文件中設置
STATIC_URL = ‘/static/’
這個設置是告訴django3,在你模板裏 ,把{% static “images/logo.png” %} 中的 static 替換成“/static/”,替換後的效果就是:/static/images/logo.png
當然你也可以設置成其他什麼名字,比如:STATIC_URL = ‘/staticfiles/’,那麼把把{% static “images/logo.png” %} 中的 static 替換後的效果就是:/staticfiles/images/logo.png
這個STATIC_URL"靜態網址“設置是對開發環境和生產環境都適用的。

二、開發環境
對於開發環境,也就是用python3 manage.py runserver打開的www服務,有兩種情況:

1、屬於某個app的靜態文件
static和templates文件存放在各個app的子目錄裏。
比如有兩個app分別是login、admin,那麼相應的css/js/html文件應該存放在如下位置:
lffdc/lffdc/settings.py
lffdc/login/static/login/css
lffdc/login/static/login/js
lffdc/login/static/login/images
lffdc/login/templates/login/base.html
lffdc/admin/static/admin/css
lffdc/admin/static/admin/js
lffdc/admin/static/admin/images
lffdc/admin/templates/admin/base.html
這注意一個問題,就是不同的APP裏的靜態文件,一定要放在appname/static/appname文件夾下,也就是在static文件夾裏再建一個和app同名的文件夾。這麼做看上去有點奇怪,但實際上是爲了後面在發佈網站的時候,把所有app裏的靜態文件都匯聚到一個文件夾下的時候做準備。
app下面的static這個文件夾是django3固定名稱的文件夾,不用另做設置,django可以自動搜索到。

2、不屬於某個具體app,而面向整個項目的靜態文件
這個需要在配置文件中定義一個目錄列表 (STATICFILES_DIRS) ,Django 會從中尋找靜態文件。例子:

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

那麼對於我們的項目lffdc來說,有如上的定義,django也會在以下兩個地方尋找靜態文件:
/var/www/html/lffdc/static
/var/www/static

三、生產環境
生產環境就是把 settings.py裏的debug 設置成 False,並在apache服務器下運行的網站。
這個時候,因爲django只處理.py的程序文件,而不處理任何其他的靜態文件如css/js/html。所以要把靜態文件拿到django“外面”,單獨設置一個目錄。
用settings.py裏的 STATIC_ROOT 表示
我這裏設置成:

STATIC_ROOT = '/var/www/html/lffdc/staticroot/'

我爲什麼要設置成 staticroot 而不是 static,就是爲了要區別開來,用以表示在生產環境的特定目錄。
設置好以後,運行:
python3 manage.py collectstatic
把分散在各自app的static文件夾中的靜態文件“收集”過來,都放到
/var/www/html/lffdc/staticroot/
文件夾下。
所以現在來看,各個app中的static文件夾下在套一個該app名稱的文件夾的是完全必要的。
收集以後,各文件夾應該是這樣的:

/var/www/html/lffdc/settings.py
/var/www/html/lffdc/staticroot/login/css
/var/www/html/lffdc/staticroot/login/js
/var/www/html/lffdc/staticroot/login/images
/var/www/html/lffdc/staticroot/admin/css
/var/www/html/lffdc/staticroot/admin/js
/var/www/html/lffdc/staticroot/admin/images

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章