2014-03-04 77 views
1

如果我想在模板中顯示圖像,我指定的路徑是相對於我的app目錄中的靜態文件夾。但是,如果我想從視圖函數加載文件,那麼我指定的路徑似乎是相對於項目目錄。這些文件是否應該放在同一個目錄下?還是通常以這種方式將它們分開?是否將視圖函數(例如包含人類可讀設置的文本文件)加載的文件視爲「靜態」,與用於呈現模板的圖像,CSS和js文件相同?Django:靜態文件與其他數據文件

回答

0

Django支持兩種不同的東西:靜態和媒體文件。靜態文件(CSS,JavaScript,圖像)是您的網站的一部分。用戶上傳的內容如圖片或視頻上傳到MEDIA_ROOT。您可以使用這兩個設置來控制這一點:

MEDIA_ROOT = '/absolute/path/to/media' 
MEDIA_URL = '/media/' 

使用開發服務器,你可能需要添加到您的網址,

urlpatterns = patterns('', 
    # ... the rest of your URLconf goes here ... 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

使用文件上傳域(FileFieldImageField),你可以使用包含定義的MEDIA_URL的url屬性獲取文件url。

0

不,你不應該混淆真正的靜態內容與包數據文件。除此之外,您通常不希望用戶能夠直接讀取這些數據文件。相反,將您的文件放置在軟件包目錄的其他位置,然後使用pkgutil.get_data來閱讀它們。