在一個 models 中使用 FileField 或 ImageField 須要如下步驟:
數據庫
1. 在你的 settings 文件中, 定義一個完整路徑給MEDIA_ROOT 以便讓 Django在此處保存上傳文件. (出於性能考慮,這些文件並不保存到數據庫.) 定義MEDIA_URL 做爲該目錄的公共 URL. 要確保該目錄對 WEB 服務器用戶賬號是可寫的.
django
2. 在你的 models.py 中添加 FileField 或 ImageField, 並確保定義了upload_to 選項,以告訴 Django 使用MEDIA_ROOT 的哪一個子目錄保存上傳文件.
服務器
3. 你的數據庫中要保存的只是文件的路徑(相對於 MEDIA_ROOT). 要想獲得這個文件的路徑能夠用.url方法。例如,若是models裏有一個取名爲"photo"的ImageField,能夠在Html模板裏經過{{object.photo.url}}獲得該圖片的路徑。性能
settings.py 設置
媒體文件的絕對路徑:
# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = 'D:\Python26\Lib\site-packages\django\bin\newproj\media'
媒體文件的相對路徑:
# URL that handles the media served from MEDIA_ROOT.
# Example: "http://media.lawrence.com"
MEDIA_URL = '/site_media/'
設置靜態文件路徑
STATIC_PATH = 'D:/Python26/Lib/site-packages/django/bin/newproj/media'
urls.py 影射路徑
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.
STATIC_PATH
}),
將
MEDIA_URL
的site_media 影射到 settings.STATIC_PATH
models.py 上傳圖片字段設置
photo = models.ImageField('上傳圖片',upload_to='photos')
至關於傳到
D:/Python26/Lib/site-packages/django/bin/newproj/media/photos
目錄下,瀏覽時經過/site_media/photos/ 訪問。