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中asyncore的用法实例
Sep 29 Python
在Python中使用mongoengine操作MongoDB教程
Apr 24 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
Mar 13 Python
python 中字典嵌套列表的方法
Jul 03 Python
Python2实现的图片文本识别功能详解
Jul 11 Python
Python测试网络连通性示例【基于ping】
Aug 03 Python
python离线安装外部依赖包的实现
Feb 13 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
python 实现的车牌识别项目
Jan 25 Python
python中使用asyncio实现异步IO实例分析
Feb 26 Python
AI:如何训练机器学习的模型
Apr 16 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 ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
分享下php5类中三种数据类型的区别
2015/01/26 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
php生成图片验证码的方法
2016/04/15 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
javascript instanceof 内部机制探析
2010/10/15 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
Vue.use源码分析
2017/04/22 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
Python探索之pLSA实现代码
2017/10/25 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
为什么说python更适合树莓派编程
2020/07/20 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
医药工作者的求职信范文
2013/09/21 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
Java 在线考试云平台的实现
2021/11/23 Java/Android
Python实现双向链表基本操作
2022/05/25 Python
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技