Django 靜態檔案配置

2022-09-11 09:33:12 字數 2064 閱讀 2404

概述:

靜態檔案交由web伺服器處理,django本身不處理靜態檔案。簡單的處理邏輯如下(以nginx為例):

uri請求 --> 按照web伺服器裡面的配置規則先處理,以nginx為例,主要求配置在nginx.conf裡的location

--> 如果是靜態檔案,則由nginx直接處理

--> 如果不是則交由django處理,django根據urls.py裡面的規則進行匹配

以上是部署到web伺服器後的處理方式,為了便於開發,django提供了在開發環境的對靜態檔案的處理機制,方法如下:

static配置:static主要指的是如css、js、images這樣檔案:

static_url = '

/static/'#

別名staticfiles_dirs =[

os.path.join(base_dir,

"static

"), #

實際名,即實際資料夾的名字]#

注意:django對引用名和實際名進行對映,引用時,只能按照引用名來,不能按實際名去找

media配置:

media_url = "

/media/"#

使用者上傳的檔案(針對models.py中的filefield、imagefield欄位)儲存到哪

media_root = os.path.join(base_dir, "

", "

media

")

#

配合settings.py裡的media_url = "/media/"配置,即對外開放了這個介面的許可權

from django.conf.urls import

urlfrom django.views.static import

serve

from . import

settings

urlpatterns =[

url(r

'^media/(?p.*)$

', serve, ),

]

靜態檔案的處理又包括static和media兩類,這往往容易混淆,在django裡面是這樣定義的:

media:指使用者上傳的檔案,比如在model裡面的filefield,imagefield上傳的檔案。如果你定義

media_root = c:\temp\media,那麼file=models.filefield(upload_to="

abc/

")#,上傳的檔案就會被儲存到c:\temp\media\abc

eg:class

blog(models.model):

photo = models.imagefield(upload_to="

photo")

上傳的就上傳到c:\temp\media\photo,而在模板中要顯示該檔案,則在

settings裡面設定media_root(必須是本地路徑的絕對路徑),一般是這樣寫:

media_root = os.path.join(base_dir, '

media/

').replace('

\\','/'

) media_root =c:\temp\media\photo

media_url = "

/data/

"在開發階段,media的處理由django處理:

訪問http://localhost/data/abc/a.png就是訪問c:\temp\media\photo\abc\a.png

在模板裡面這樣寫

/media/abc/a.png

">在部署階段最大的不同在於你必須讓web伺服器來處理media檔案,因此你必須在web伺服器中配置,

以便能讓web伺服器能訪問media檔案。

以nginx為例,可以在nginx.conf裡面這樣:

location ~/media/

具體可以參考如何在nginx部署django的資料。

Django靜態檔案配置

最近用django開發專案,發現django的靜態檔案 js,css和img等 配置比較麻煩,開發環境和生產環境的配置還不一樣,這裡記錄一下,作為備忘。我當前使用的版本是django v1.4.3。吐槽 django的版本不相容是個大問題,網上搜尋相關問題時,解決方案到是一大推,但是均沒有標註版本,...

Django 靜態檔案配置

django 在自身的開發伺服器上有著自身的淺藍色排版。部署到apache伺服器上會呈現一種無排版狀態。原因是 static 靜態檔案沒有配置。1.在設定檔案 settings.py 裡,新增 static url static static root os.path.join base dir,s...

Django靜態檔案配置

本文目的 最近用django開發專案,發現django的靜態檔案 js,css和img等 配置比較麻煩,開發環境和生產環境的配置還不一樣,這裡記錄一下,作為備忘。我當前使用的版本是django v1.4.3。吐槽 django的版本不相容是個大問題,網上搜尋相關問題時,解決方案到是一大推,但是均沒有...