在一个 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/ 访问。