概述:static配置:static主要指的是如css、js、images這樣檔案:靜態檔案交由web伺服器處理,django本身不處理靜態檔案。簡單的處理邏輯如下(以nginx為例):
uri請求 --> 按照web伺服器裡面的配置規則先處理,以nginx為例,主要求配置在nginx.conf裡的location
--> 如果是靜態檔案,則由nginx直接處理
--> 如果不是則交由django處理,django根據urls.py裡面的規則進行匹配
以上是部署到web伺服器後的處理方式,為了便於開發,django提供了在開發環境的對靜態檔案的處理機制,方法如下:
static_url = 'media配置:/static/'#
別名staticfiles_dirs =[
os.path.join(base_dir,
"static
"), #
實際名,即實際資料夾的名字]#
注意:django對引用名和實際名進行對映,引用時,只能按照引用名來,不能按實際名去找
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的版本不相容是個大問題,網上搜尋相關問題時,解決方案到是一大推,但是均沒有...