1:配置setting的设置
2:定义上传文件的入口
3:定义处理上传文件的view函数
4:配置路径url
当 Django 在处理文件上传的时候,文件数据被保存在 request.FILES
FILES 中的每个键为<input type="file" name="" />中的 name
注意:要包含数据需要注意一下两方面:
FILES 请求的方法为 POST
提交的 <form>带有 enctype="multipart/form-data"
否则,FILES 将为一个空的类似于字典的对象
模型定义中将属性定义成 models.ImageField 类型 :
pic=models.ImageField(upload_to='cars/')
注意:如果属性类型为 ImageField 需要安装包 Pilow
pip install Pillow
1:配置setting的设置
o 在项目根目录下 static 目录下创建 media 文件夹
o 图片上传后,会被保存到 “/static/media/图片文件”
o settings.py 文件中增加 media_root 项
MEDIA_ROOT=os.path.join(BASE_DIR,"static/media")
2:定义上传文件的入口
与平常的表单不同之处:要加上enctype="multipart/form-data"
<form method="post" action="upload/" enctype="multipart/form-data">
<br />{% csrf_token %}<br />
<input type="text" name="title"><br>
<input type="file" name="pic"/><br>
<input type="submit" value="上传 ">
</form>
</body>
3:定义处理上传文件的view函数
def upload(request):
if request.method == "POST": # 先判断请求方式
f1 = request.FILES["pic"] #拿到文件
fname = "%s/%s" % (settings.MEDIA_ROOT, f1.name) # 拼接文件的路径
with open(fname, "wb+") as pic:
for c in f1.chunks():
pic.write(c) # 将文件写入这个路径中
return HttpResponse("ok")
else:
return HttpResponse("error")
4:配置路径url
url(r"^upload/$", views.upload),
网友评论