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 相关文章推荐
django实现前后台交互实例
Aug 07 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
python简单实现AES加密和解密
Mar 28 Python
Django中在xadmin中集成DjangoUeditor过程详解
Jul 24 Python
Python 画出来六维图
Jul 26 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
Nov 11 Python
pandas 中对特征进行硬编码和onehot编码的实现
Dec 20 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
Python-opencv实现红绿两色识别操作
Jun 04 Python
pandas之分组groupby()的使用整理与总结
Jun 18 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
python flappy bird小游戏分步实现流程
Feb 15 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
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
extjs 为某个事件设置拦截器
2010/01/15 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
js实现聊天对话框
2020/02/08 Javascript
python实现哈希表
2014/02/07 Python
浅谈python中的变量默认是什么类型
2016/09/11 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
2018/10/16 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
狗狗玩具、零食和咀嚼物的月度送货服务:Super Chewer
2018/08/22 全球购物
Pandora德国官网:购买潘多拉手链、戒指、项链和耳环
2020/02/20 全球购物
文字自荐书范文
2014/02/10 职场文书
生日寄语大全
2014/04/08 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
总结Python使用过程中的bug
2021/06/18 Python
Pandas搭配lambda组合使用详解
2022/01/22 Python