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的汉字转GBK码实现代码
Feb 19 Python
Python的Django中django-userena组件的简单使用教程
May 30 Python
详解Python3中字符串中的数字提取方法
Jan 14 Python
Python模拟登陆实现代码
Jun 14 Python
Python内置模块logging用法实例分析
Feb 12 Python
python对list中的每个元素进行某种操作的方法
Jun 29 Python
Python遍历文件夹 处理json文件的方法
Jan 22 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
学Python 3的理由和必要性
Nov 19 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
Dec 13 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 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提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
Python中使用支持向量机SVM实践
2017/12/27 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
PHP笔试题
2012/02/22 面试题
ddl,dml和dcl的含义
2016/05/08 面试题
元旦晚会感言
2014/03/12 职场文书
金融事务专业求职信
2014/04/25 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
法院答辩状格式
2015/05/22 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python