2011-09-17 54 views
19

我對django中的靜態文件和媒體文件感到困惑。我在其他地方看到人們交替使用它。django - 我應該何時使用media_root或static_root?

什麼時候應該使用media_root以及何時應該使用static_root

如果我有網站圖片,我應該把它放在靜態?如果我有產品圖片,我是否會把它放在媒體中?

回答

28

MEDIA_ROOT是放置文件上傳的目錄,以及通常存儲生成文件的位置。例如,我的一個Django應用程序允許用戶上傳圖像。在其中一個模型類中,我使用類型sorl-thumbnailupload_to='%Y-%m'。每當用戶上載圖像時,文件將存儲在MEDIA_ROOT/%Y-%m/%Y用當前年份替換,%m替換爲當前月份編號)。此外,當sorl縮略圖爲上傳的圖像生成縮略圖時,它會將縮略圖by default放置在MEDIA_ROOT/cache/的某處。

STATIC_ROOT用於配置放置靜態資產的目錄。例如,網頁設計中使用的網站樣式表,JavaScript文件和圖像是進入STATIC_ROOT的文件類型。如果您有多個安裝的應用程序,則每個使用靜態文件的應用程序都可以有自己的靜態文件目錄。您使用collectstatic管理功能(通過python manage.py collectstatic調用)將所有應用程序的靜態文件複製到STATIC_ROOT

+0

感謝您的回覆。還有一個跟進問題。如果我獲得產品圖像怎麼辦?那該去哪?管理員可以上傳,並應在網站上顯示。 –

+0

@ bash-:您是否將產品圖像的路徑存儲在數據庫中? ['ImageField'](https://docs.djangoproject.com/en/dev/ref/models/fields/#imagefield)和['FileField']的文件(https://docs.djangoproject.com/en/dev/models/fields /#filefield)進入'MEDIA_ROOT',所以在這種情況下,是的,產品圖像進入'MEDIA_ROOT'(但你不需要手動將它們上傳到'MEDIA_ROOT'應用程序應該這樣做)。如果您手動維護產品圖片並在模板上的''標籤中引用它們,則產品圖片應該放在'STATIC_ROOT'中。 –

相關問題