上传图片
今天跟大家分享一个Admin站点上传图片的详细步骤,希望能够帮助到大家
Django有提供文件系统支持,在Admin站点中可以轻松上传图片。
使用Admin站点保存图片,需要安装Python的图片操作包
pip install Pillow
注意:Pillow中的P是大写字母
1. 配置
默认情况下,Django会将上传的图片保存在本地服务器上,我们需要配置保存路径.
首先我们需要在项目中创建一个目录来保存上传的图片.
在这里我创建的Media
在settings.py 文件中添加如下上传保存目录信息
MEDIA_ROOT=os.path.join(BASE_DIR,"Media")
2. 为模型类添加ImageField字段
我们为之前的BookInfo模型类添加一个ImageFiled
class BookInfo(models.Model):
...
image = models.ImageField(upload_to="users",verbose_name="图片",null=True)
- upload_to 选项指明该字段的图片保存在MEDIA_ROOT目录中的哪个子目录,在这里我的子目录是 users ,如果该子目录不存在会自动创建
- 在新增该字段时, 默认值 null 要指定允许为空,否则前面的数据会报错
3. 进行数据库迁移操作
python manage.py makemigrations
python manage.py migrate
4. 修改admin.py中模型管理类中编辑页面选项,添加可修改图片
添加之前的代码:
###定义后台管理类###
class BookInfoAdmin(admin.ModelAdmin):
...
#####调整编辑展示,显示字段###
fields = ["btitle","bpub_date"]
浏览器显示:
添加后代码(只需要添加一个image,这个image就是我们在模型当中添加的模型字段名):
###定义后台管理类###
class BookInfoAdmin(admin.ModelAdmin):
...
#####调整编辑展示,显示字段###
fields = ["btitle","bpub_date","image"]
最终效果:
5. 访问页面进行上传图片
注意:
-
上传完图片,如果有必填字段我们需要填一下,如果没有,就不需要填,最后一定一定记得保存
-
如果前面做过修改时关联对象,那么在上传图片的同时,还需要添加关联的数据,否则上传不成功.
-
选择一张图片并保存后,图片会被保存在我们创建的 Media 目录下。
在数据库中,我们能看到image字段被设置为图片的路径