2011-02-16 59 views
53

我正在轉向Django 1.3,並發現媒體和靜態文件的這種分離有點混亂。下面是默認settings.py的樣子:Django中的靜態文件和媒體文件有什麼區別?

# Absolute filesystem path to the directory that will hold user-uploaded files. 
# Example: "/home/media/media.lawrence.com/media/" 
MEDIA_ROOT = '' 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
# trailing slash if there is a path component (optional in other cases). 
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/" 
MEDIA_URL = '' 

# Absolute path to the directory that holds static files. 
# Example: "/home/media/media.lawrence.com/static/" 
STATIC_ROOT = '' 

# URL that handles the static files served from STATIC_ROOT. 
# Example: "http://media.lawrence.com/static/" 
STATIC_URL = '/static/' 

我應該投入MEDIA_ROOTSTATIC_ROOT?那些應該是單獨的目錄?有什麼不同?

+0

看到這篇文章https://groups.google.com/forum/#!topic/django-users/tSb4EC0G040 – laike9m 2013-11-03 14:39:02

回答

49

靜態文件是爲JavaScript /圖像等,但媒體文件是用於用戶上傳的內容。

+0

那些仍然存儲他們的東西到媒體的應用程序呢?例如contrib.admin。我應該symlinking到我的項目媒體文件夾或靜態文件夾嗎?因爲根據你的答案,這些文件現在屬於靜態文件。 – darren 2011-04-20 09:38:43

29

正如Uku Loskit所說,靜態文件適用於應用程序的css文件,JavaScript文件,圖像等。媒體文件通常是用戶或管理員可上載的文件。

通常情況下,您需要MEDIA_ROOTSTATIC_ROOT爲不同的目錄。請記住,STATIC_ROOT是管理命令collectstatic將放置找到的所有靜態文件的位置。在生產中,當給出以STATIC_URL開頭的請求時,您將網絡服務器配置爲提供STATIC_ROOT以外的文件。如果您使用Django devserver進行開發,它將自動提供靜態文件。

靜態文件應用程序因此解開了用戶從應用程序媒體中上傳的媒體,從而使部署,備份和版本控制更容易。在靜態文件應用程序之前,開發人員通常將媒體文件與靜態應用程序資產混合在一起。

靜態文件的1.3文件一直在穩步提高;欲瞭解更多詳情,請看how-to