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导入oracle数据的方法
Jul 10 Python
Python信息抽取之乱码解决办法
Jun 29 Python
python制作小说爬虫实录
Aug 14 Python
Python获取网段内ping通IP的方法
Jan 31 Python
PyQt5实现简易电子词典
Jun 25 Python
浅谈Python type的使用
Nov 19 Python
python对Excel按条件进行内容补充(推荐)
Nov 24 Python
Django 后台带有字典的列表数据与页面js交互实例
Apr 03 Python
如何安装并在pycharm使用selenium的方法
Apr 30 Python
QML用PathView实现轮播图
Jun 03 Python
Python学习之time模块的基本使用
Jan 17 Python
python基础之爬虫入门
May 10 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删除非空目录的函数代码小结
2013/02/28 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
js 覆盖和重载 函数
2009/09/25 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
Python中的闭包总结
2014/09/18 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
医学生个人求职信范文
2013/09/24 职场文书
优秀共产党员先进事迹
2014/01/27 职场文书
青春无悔演讲稿
2014/05/08 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
校园广播稿范文
2015/08/19 职场文书