django接收前端vue传输的formData图片数据

在Django中接收前端Vue传输的formData中的图片数据,通常是通过Django的视图(Views)和表单(Forms)来实现的。下面是一个基本的示例,说明了如何在Django后端处理由Vue前端发送的formData图片。

前端Vue代码示例:

假设你有一个Vue组件,其中包含一个表单,用户可以通过这个表单上传图片:

javascript 复制代码
<template>
  <div>
    <form @submit.prevent="submitForm">
      <input type="file" @change="onFileChange" />
      <button type="submit">上传图片</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      file: null,
    };
  },
  methods: {
    onFileChange(e) {
      this.file = e.target.files[0];
    },
    async submitForm() {
      if (!this.file) {
        alert('请选择一个文件。');
        return;
      }

      const formData = new FormData();
      formData.append('image', this.file);

      try {
        const response = await this.$http.post('/upload/', formData, {
          headers: {
            'Content-Type': 'multipart/form-data',
          },
        });
        console.log('Image uploaded:', response.data);
      } catch (error) {
        console.error('上传失败:', error);
      }
    },
  },
};
</script>

后端Django代码示例:

在Django后端,你需要创建一个视图来处理图片上传:

python 复制代码
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from django.core.files.storage import default_storage
from django.core.files.base import ContentFile

@csrf_exempt  # 如果你不使用Django的CSRF令牌,则可以暂时禁用CSRF保护
def upload_image(request):
    if request.method == 'POST' and request.FILES['image']:
        image = request.FILES['image']
        image_name = default_storage.save(image.name, ContentFile(image.read()))
        image_url = default_storage.url(image_name)
        return JsonResponse({'message': '图片上传成功', 'url': image_url})
    return JsonResponse({'error': '无法上传图片'}, status=400)

urls.py中,你需要为这个视图添加一个URL路径:

python 复制代码
from django.urls import path
from .views import upload_image

urlpatterns = [
    # ... 其他URL配置 ...
    path('upload/', upload_image, name='upload_image'),
]
相关推荐
智海深蓝6 分钟前
智慧渔业海上养殖数字孪生实践方向与难点拆解分析
java·前端·网络
丁引17 分钟前
《数据清洗的艺术:如何用20行核心逻辑优雅地删除无标签图片》
前端·数据库·python
Bigger28 分钟前
Han:一个让 AI Agent 也能做出高级中国风页面的 CSS 设计系统
前端·ai编程·设计
梦想的旅途242 分钟前
企业微信自动化:自动发送文本、图片、文件
前端·数据库·microsoft
John jj1 小时前
拆解 Telegram 群组频道收录市场:三类方案,一个可运行的评分模型,目前TG中文人工评分加模型评分机制——LetsTG收录“快速”、“无门槛”
大数据·后端·python·深度学习·搜索引擎·django·全文检索
MartinYeung51 小时前
npm爆发大规模供应链攻击 蠕虫污染 2000+ 个包版本: 深度技术剖析
前端·npm·node.js
huabuyu1 小时前
治好 AI 长回答的卡、闪、膨胀:渲染开销从 50 万次砍到 1000
前端·javascript
嘟嘟07171 小时前
学了 useContext 还是不理解?从 prop drilling 到 useMouse 的一次完整复盘
前端·javascript·react.js
玉宇夕落1 小时前
React useContext 与自定义 Hook —— 从零到一理解跨组件通信与状态共享
前端
涛涛ing1 小时前
一行命令让AI帮你修性能问题:perfpatch正在改变前端优化的游戏规则
前端