簡易配置Django的Static檔案

2022-04-18 08:22:24 字數 2583 閱讀 2818

django 1.3以後,採用static方式處理靜態檔案,比如**的css js images等等,而以前所謂的media改成處理**自身以外的**檔案了。media和static用途上容易混淆,請移步上次講的《對django media和static概念的理解

》。如果簡單使用static,配置起來會比media要少一步,下面會比較一下。說到static,不能不說說django開發環境和部署環境的區別,django配置檔案settings.py裡的debug變數就是主要的區別, debug=true,說明是在開發環境(除錯模式)下,debug=false反之是在正式部署環境下使用。兩者有很大的區別,比如快取,出錯資訊的方式等等,還有今天說的靜態檔案的處理方式上。開發環境下靜態檔案都是通過django自帶的web伺服器來處理的(這樣會更方面)。如果把debug設定成false,那麼django自帶的web伺服器自然不處理靜態檔案了,靜態檔案都交給nginx,apache來處理吧(這樣會更高效)。

具體說說static在開發環境下怎麼配置吧。

這次主要拿django 1.4版本來做配置,這個要事先宣告,因為1.4以後,django的專案結構發生很大的變化,如果下面的配置做法放到django 1.3上肯定不適應了,值得注意哦。staitc的配置只要在settings.py裡做即可。

debug=true 這個設定環境是處在開發環境下。

然後自己建立乙個變數site_root,變數不是必須的,只是為了方面重用,名字可以隨意起。 import os site_root=os.path.join(os.path.abspath(os.path.dirname(__file__)),'..') 變數值專案的根目錄,也就是settings.py的存放位置。

然後給靜態檔案變數賦值,告訴django,靜態檔案在** static_root = os.path.join(site_root,'static')

說到這裡,我還是說說專案檔案結構吧,這個容易蒙人,比如這次的講的專案結構如下: myproject ----myproject --------__init__.py --------settings.py --------urls.py --------wsgi.py ----blog --------__init__.py --------models.py --------views.py --------test.py ----static --------css ------------style.css --------js ------------jquery.js --------images ------------me.jpg ----media --------upload

注意專案的結構,你會發現site_root就是 myproject ----myproject 的路徑。

static_root就是 myproject ----media 的路徑。

好,接著配置說 static_url = '/static/' 給靜態檔案url乙個字尾,在templates裡用到的。

最後關鍵的部分是staticfiles_dirs以下配置 staticfiles_dirs = (     ("css", os.path.join(static_root,'css')),     ("js", os.path.join(static_root,'js')),     ("images", os.path.join(static_root,'images')), ) 簡要說一下,static資料夾在專案裡,有css js images 三個資料夾(看專案結構),他們的路徑分別是: os.path.join(static_root,'css'),os.path.join(static_root,'js'),os.path.join(static_root,'images'); 我們分別給他們起三個別名css,js,images(你可以隨意給,不過為了易記,我們原名稱指定別名了)

到這裡staitc算是配置完成了,並不需要再urls.py裡配置相關的東西,django就會自動找到對的路徑解析靜態檔案了,也是在配置上static比media少了一步。

配置好了,在templates 就能正常使用靜態檔案了。怎麼用?拿乙個templates講解吧。

注意}就是取配置檔案settings.py裡的static_url變數,解析出來的就是:/static/。

而}css/style.css最終解析出來的就是我們想要的:/static/css/style.css,django會根據配置檔案找到相應的檔案。

快到尾聲的時候,講講正式部署環境怎麼設定吧:

debug=false

首先把debug設定為false,告訴django環境是正式的非除錯模式下了,然後django就不再通過自己來處理靜態頁面了,最後靜態檔案都交給nginx apache來處理了。

說說nginx怎麼配置,才能正確解析靜態檔案吧,在乙個server裡新增乙個location靜態檔案處理

location  /static/

這個也有乙個容易犯錯的地方,就是路徑,有的同學常常指定這樣的路徑:/home/www-data/twogoo/myproject/staitc/;這樣nginx應該找不到靜態檔案的,因為nginx會跑到/home/www-data/twogoo/myproject/staitc/staitc/路徑裡找,注意這點,靜態檔案處理上你會順很多。

Django搭建簡易部落格

django簡易部落格,主要實現了以下功能 連線資料庫 建立超級使用者與後台管理 利用django admin bootstrap美化介面 template,view與動態url markdown與 高亮 歸檔,aboutme和標籤分類 搜尋與readmore rss與分頁 需要新增的安裝包 要注意...

Django 簡易基礎流程

在templates中建立html文件,用作與瀏覽器的互動主體 在views中建立函式,承載處理邏輯,將處理函式與html關聯,如下所示 from django.shortcuts import render create your views here.paralist list def func...

mysql的簡易配置

mysqld 資料位址,埠 datadir var lib mysql port 3306 server id 124 disabling symbolic links is recommended to prevent assorted security risks symbolic links ...