VUE上传图片的的问题 djang,drf对接

我并非前端的工作人员,因为有个项目需要需写前端 写的不好请不要喷我 - -

这个问题是VUE怎么对接Django的DRF视图类自动保存图片以及图片额外的信息

我就直接上代码吧

首先是VUE

在这里插入图片描述

可能有点乱

  <el-dialog
  title="上传运营商二维码(文件名不能为中文)"
  :visible.sync="is_upload_img"
>

表单部分
  <el-form :model="image_data">
    <el-form-item
      label="运营商名称"
      placeholder="电信,移动,联通"
      :label-width="upload_img_Width"
    >
      <el-input v-model="image_data.title" autocomplete="off"></el-input>
    </el-form-item>
    <el-form-item
      label="备注"
      placeholder="备注信息"
      :label-width="upload_img_Width"
    >
      <el-input v-model="image_data.remarks" autocomplete="off"></el-input>
    </el-form-item>
  </el-form>
  
文件上传部分
  <el-upload
    action="1"
    list-type="picture-card"
    :on-change="image_change"
    :auto-upload="false"
  >
    <i class="el-icon-plus"></i>
  </el-upload>
  <el-dialog :visible.sync="dialogimageVisible">
    <img width="100%" :src="dialogImageUrl" alt="" />


  </el-dialog>
  脚步按钮部分
  <div slot="footer" class="dialog-footer">
    <el-button @click="is_upload_img = false">取 消</el-button>
    <el-button type="primary" @click="ipload_image">确 定</el-button>
  </div>


</el-dialog>

data部分

image_data: {
    title: "",
    remarks: "",
    image: "",
  },	

methods部分

   // 储存图片文件 首先我定义了一个钩子将上传的文件放到我想要放到的字典中
image_change(file) {
  let raw = file.raw;
  this.image_data.image = raw;
},

其次利用dialog的确定去封装想要发送的信息
ipload_image() {
  let title = this.image_data.title;
  let remarks = this.image_data.remarks;
  let image = this.image_data.image;
  # 这个  let formData = new FormData() 因为我没学过前端,网上看是弄成二进制
  let formData = new FormData();
  if (title === "") {
    this.$message("名称不能为空");
    return;
  }
  if (image === "") {
    this.$message("图片不能为空");
    return;
  }
  # 封装数据
  formData.append("operato_name", title); // 额外参数
  formData.append("image", image);
  formData.append("remark", remarks);
  console.log(title);
  console.log(remarks);
  console.log(image);
  # 调用axios发送
  upload_image_url(formData).then((res) => {
    this.is_upload_img = false;
  });
},

axios部分

export function dev_update_file__Upload_url(formData){

return request ({
		url : `/api/device/div_update_info/`,
		method : 'post',
		headers: {
				# 这里指定格式
   				'Content-Type': 'multipart/form-data',
		},
		#将封装的内容放进去
		data :formData
	})
}

后端部分

在这里插入图片描述
在这里插入图片描述

我的序列化器指定了三个必传字段,所以我对前端的fromdata封装了三个数据,这样后端就能接收了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。 这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。 平时不明白的知识点,放在项目里去理解就恍然大悟了。   一、融汇贯通 本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用Python 的Django框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。   二、贴近实战 本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django中实现针对数据的增删改查的接口、在Vuejs中实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据到Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战   三、课程亮点 在本案例中,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互   适合人群: 1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友; 2、有Django基础,但是想学习企业级项目实战的朋友; 3、有MySQL数据库基础的朋友  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值