在一个 models 中使用 FileField 或 ImageField 需要以下步骤:
1. 在你的 settings.py文件中, 定义一个完整路径给MEDIA_ROOT 以便让 Django在此处保存上传文件.定义MEDIA_URL 作为该目录的公共 URL. 要确保该目录对 WEB 服务器用户帐号是可写的.
2. 在你的 models.py 中添加 FileField 或 ImageField, 并确保定义了upload_to 选项,以告诉 Django 使用MEDIA_ROOT 的哪个子目录保存上传文件.
3. 你的数据库中要保存的只是文件的路径(相对于 MEDIA_ROOT). 要想得到这个文件的路径可以用.url方法。在Html模板里通过{{object.photo.url}}得到该图片的路径。
settings.py 设置
MEDIA_URL = '/uploads/' MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
urls.py 映射路径
url(r"^uploads/(?P<path>.*)$", django.views.static.serve, {"document_root": settings.MEDIA_ROOT, })
models.py 上传图片字段设置
avatar = models.ImageField(upload_to='avatar/%Y/%m', default='avatar/default.png', max_length=200, blank=True, null=True, verbose_name='用户头像')