django-上传图片
上传图片
- 当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==3.4.1
上传图片例子:
- 图片存储路径
- 在项目目录static/下创建media文件夹
- 图片上传后,会被保存到“/static/media/图片文件”
- 打开settings.py文件,增加media_root项
![]()
url.py
1 from django.conf.urls import url,include 2 from . import views 3 4 urlpatterns = [ 5 url(r'^$',views.index), 6 url(r'^uploadPic$',views.uploadPic), 7 url(r'^uploadHandle$',views.uploadHandle), 8 ]
view.py
from django.shortcuts import render from django.http import HttpResponse from django.conf import settings import os #文件上传练习 def uploadPic(request): return render(request,'booktest/uploadPic.html') def uploadHandle(request): file=request.FILES['pic1'] #获取上传的文件 filepathname=os.path.join(settings.MEDIA_ROOT,file.name) #拼接上传文件的路径 with open(filepathname,'wb+') as pic: for c in file.chunks(): #在file.chunks()上循环而不是用read()保证大文件不会大量使用系统内存 pic.write(c) # return HttpResponse(filepathname) return HttpResponse('<img src="/static/media/{}">'.format(file.name)) #返回上传的图片
uploadPic.html
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>文件上传</title> 6 </head> 7 <body> 8 <form action="uploadHandle" method="post" enctype="multipart/form-data"> <!--上传文件需要加上enctype属性--> 9 {% csrf_token %} 10 <input type="file" name="pic1"> 11 <br><br> 12 <input type="submit" value="提交"> 13 </form> 14 15 </body> 16 </html>

posted on 2020-01-30 13:33 cherry_ning 阅读(167) 评论(0) 收藏 举报

浙公网安备 33010602011771号