我對使用哪個字段有點困惑。我需要的只是一個字段,將保存一個文件(音頻和/或另一個圖像)使用Django FileField或FilePathField?
FileField似乎是專門用於上傳,我認爲這是一個矯枉過正的我需要的東西,我也不喜歡每次上傳文件時它會自動上傳文件並將其重命名爲唯一的文件名(file_FHjgh758.txt)。
我與FilePathField的問題是,它似乎需要一個絕對路徑,這顯然是不同的,從開發到生產,我身邊這讓加入到這個模型......
import os
class Foo(models.Model):
path = os.path.dirname(os.path.dirname(__file__))
path = os.join(path, 'media')
audio = models.FilePathField(path=path)
我不知道這是否安全或適當,並且網上或文檔中沒有太多示例可供借鑑。
要清楚,我只是想有一個領域,我可以指向一個文件(音頻或圖像)在我的系統某處。這樣做最好的方法是什麼?
感謝您的回答,這對我來說很有意義,儘管我被困在如何從模板中調用文件位置。如果我調用保存在數據庫中的url,它就像'/home/../../',而html試圖使它相對於不正確的開發服務器。我想我失去了一些東西很明顯這裏 – deltaskelta
我認爲這個問題是'FilePathField'意味着更多的位於服務器上是無法通過Web服務器訪問...如果你想公開的文件,那麼你最好使用文件'FileField'具有'url'屬性,它還將文件保存在一個可訪問的位置(在你的'MEDIA_ROOT'中)。您可以覆蓋'FileField'的保存行爲以防止隨機後綴。 – solarissmoke
感謝您的跟進,如果我沒有弄錯,我還應該在urls.py中輸入一個條目,並處理進入/ media文件夾的請求。這是正確的還是這也危險? – deltaskelta