上传文件

1:配置setting的设置
2:定义上传文件的入口
3:定义处理上传文件的view函数
4:配置路径url

当 Django 在处理文件上传的时候,文件数据被保存在 request.FILES

 FILES 中的每个键为中的 name

 注意:要包含数据需要注意一下两方面:

     FILES 请求的方法为 POST 

     提交的 
带有 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"

  
            
{% csrf_token %}


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),

你可能感兴趣的:(上传文件)