Django实现图片上传功能步骤解析


Posted in Python onApril 22, 2020

1.首先是html页面的form表单的三大属性,action是提交到哪,method是提交方式,enctype只要有图片上传就要加这个属性

Django框架自带csrf_token ,所以需要在前端页面也生成csrf_token字符串,来验证真实客户

<form action="/pic_upload/" method="POST" enctype="multipart/form-data">
    
{% csrf_token %}
    
<input type="file" name="file">
    
<input type="submit" value="提交">
  
 </form>

2.如下是上传图片的接口:

def pic_upload(request):
  if request.method == "GET":
    return render(request,"helloapp/pic_upload.html",locals())
  if request.method == "POST":
    error = ""
    fp = request.FILES.get("file")
    # fp 获取到的上传文件对象
    if fp:
      path = os.path.join(STATICFILES_DIRS[0],'image/' + fp.name)  # 上传文件本地保存路径, image是static文件夹下专门存放图片的文件夹
      # fp.name #文件名
      #yield = fp.chunks() # 流式获取文件内容
      # fp.read() # 直接读取文件内容
      if fp.multiple_chunks():  # 判断上传文件大于2.5MB的大文件
        # 为真
        file_yield = fp.chunks()  # 迭代写入文件
        with open(path,'wb') as f:
          for buf in file_yield:   # for情况执行无误才执行 else
            f.write(buf)
          else:
            print("大文件上传完毕")
      else:
        with open(path,'wb') as f:
          f.write(fp.read())
        print("小文件上传完毕")
      models.ImgPath.objects.create(path=('image/' + fp.name))   # image是static文件夹下专门存放图片的文件夹
    else:
      error = "文件上传为空"
      return render(request,"helloapp/pic_upload.html",locals())
    return redirect("helloapp/pic_index/") # 重定向到首页

3.做个图片展示的页面,对图片展示对应的接口传过来的参数加以判断

{% for img in imgs %}
   <img src="{% static img.path %}">
   {% empty %}
   <h1>您没有上传任何图片</h1>
   {% endfor %}

4.图片展示的接口:

def pic_index(request):
  imgs = models.ImgPath.objects.all()
  return render(request,'helloapp/pic_index.html',locals())

至此,Django中一个简单的图片上传到展示就做好了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中cPickle用法例子分享
Jan 03 Python
Python中的并发编程实例
Jul 07 Python
简单介绍Python中用于求最小值的min()方法
May 15 Python
Python学习小技巧之列表项的排序
May 20 Python
python删除字符串中指定字符的方法
Aug 13 Python
Python 线程池用法简单示例
Oct 02 Python
python绘制无向图度分布曲线示例
Nov 22 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
Python调用shell cmd方法代码示例解析
Jun 18 Python
Python如何截图保存的三种方法(小结)
Sep 01 Python
Python日志模块logging用法
Jun 05 Python
Django框架配置mysql数据库实现过程
Apr 22 #Python
jupyter notebook 实现matplotlib图动态刷新
Apr 22 #Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
Apr 22 #Python
查看jupyter notebook每个单元格运行时间实例
Apr 22 #Python
Django数据结果集序列化并展示实现过程
Apr 22 #Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 #Python
TensorFlow使用Graph的基本操作的实现
Apr 22 #Python
You might like
PHP 函数执行效率的小比较
2010/10/17 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
php DES加密算法实例分析
2019/09/18 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
鼠标经过的文本框textbox变色
2009/05/21 Javascript
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
js实现网页随机验证码
2020/10/19 Javascript
python写的ARP攻击代码实例
2014/06/04 Python
python 远程统计文件代码分享
2015/05/14 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
python如何绘制疫情图
2020/09/16 Python
python中remove函数的踩坑记录
2021/01/04 Python
佳能英国官方网站:Canon UK
2017/08/08 全球购物
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
大学学年自我鉴定
2013/10/28 职场文书
个人自荐信
2013/12/05 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
经济贸易系求职信
2014/08/04 职场文书
80后婚前协议书范本
2014/10/24 职场文书
2016教师国培研修感言
2015/12/08 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers