Django + Vue 实现图片上传功能的全流程配置与详细操作指南

在这里插入图片描述

文章目录

  • 前言
  • 图片上传步骤
    • 1. urls 配置
    • 2. settings 配置
    • 3. models 配置
    • 4. 安装Pillow


前言

    在现代Web应用中,图片上传是一个常见且重要的功能。Django作为强大的Python Web框架,结合Vue.js这样的现代前端框架,能够高效地实现这一功能。本文将详细介绍如何在Django项目中配置图片上传的后端处理,并在Vue前端实现图片的选择、预览和上传功能。

图片上传步骤

1. urls 配置

from django.contrib import admin
from django.urls import path,includefrom django.conf import settings
from django.conf.urls.static import staticurlpatterns = [path('admin/', admin.site.urls),path('app/',include('app.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  • static 函数用于定义静态文件的URL模式,它接收两个参数:
    • 第一个参数是settings.MEDIA_URL,它是一个字符串,表示媒体文件的URL前缀。
    • 第二个参数是settings.MEDIA_ROOT,它是一个字符串,表示媒体文件在服务器上的存储路径。

2. settings 配置

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

1. MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

  • 这行代码设置了Django项目中媒体文件的根目录。os.path.join是一个Python函数,用于连接多个路径部分,生成一个完整的路径。
  • BASE_DIR通常是一个变量,表示Django项目的根目录。这个目录是Django项目中所有其他路径的基准点。
  • 'media'是一个子目录,用于存放用户上传的媒体文件,比如图片、视频、文档等。

2. MEDIA_URL = '/media/'

  • 这行代码定义了媒体文件的URL前缀。当Django处理URL请求时,如果URL以/media/开头,它就会知道这个请求是指向媒体文件的。

3. models 配置

class ShopModel(models.Model):name = models.CharField(max_length=100)price = models.DecimalField(max_digits=3,decimal_places=2)count = models.IntegerField()info = models.CharField(max_length=200)is_checked = models.BooleanField(default=False)shopimg = models.ImageField(upload_to='imag/',null=True)# 默认状态参数-------------------------------# 保质期---剩余天数protect = models.IntegerField(null=True)def __str__(self):return self.nameclass Meta():db_table = 'shop'
  • models.ImageField:这是 Django 的一个字段类型,用于处理图像上传。它继承自 models.FileField,专门用于存储图像文件,比如 JPEG、PNG 等格式。
  • upload_to='imag/':这个参数指定了上传文件的保存路径。当用户上传图片时,Django 会将图片保存在 MEDIA_ROOT 目录下的 imag 文件夹中。
    • 例如,如果你的 MEDIA_ROOT 设置为 /path/to/media,则图片将被保存在 /path/to/media/imag/
  • null=True:这个参数允许字段可以存储空值。也就是说,如果用户没有上传图片,这个字段可以是 NULL,而不是必须有一个文件。

4. 安装Pillow

  • 在使用ImageField字段的时候,需要提前安装:pip install Pillow
  • Pillow 它提供了丰富的图像处理功能,使用它就可以完成对图像的操作了

前端代码:

<input type="file" accept="image/png" @change="imgChange">
upfile() {let formdata = new FormData();​      formdata.append('name',this.shop.name);
​      formdata.append('price',this.shop.price);
​      formdata.append('count',this.shop.count);
​      formdata.append('info',this.shop.info);
​      formdata.append('shopimg',this.shop.shopimg);this.$axios.post('http://127.0.0.1:8000/app/shops/',formdata,{
​        headers:{'Content-Type':'multipart/form-data'}}).then((result) => {
​        console.log(result);}).catch((err) => {
​        console.log(err);});
}

FormData

  • FormData 用于创建键值对集合和构造包含文件的请求体,这些键值对可以被用来发送 HTTP 请求。它特别适用于需要上传表单数据,包括文件。
  • FormData 对象提供了 append 方法来添加键值对,并且能够自动处理文件上传的边界和编码。使用这种方式,开发者可以轻松地将文件作为二进制数据上传到服务器。
  • 使用 Axios 发送 POST 请求,并将 FormData 作为请求体。请求头内容应该修改为:'Content-Type':'multipart/form-data'
  • 由于 FormData 会自动设置 Content-Typemultipart/form-data,所以也可以省略

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/369110.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DolphinDB 蝉联 Gartner 中国实时数据管理代表厂商

报&#xff01;DolphinDB 又上榜啦&#xff01;&#xff01;&#xff01; 上月&#xff0c;全球知名信息技术研究公司 Gartner 发布了 Hype Cycle for Data, Analytics and AI in China, 2024 报告&#xff0c;以技术成熟度曲线&#xff08;Hype Cycle&#xff09;和优先级矩阵…

JVM的五大内存区域

JVM的五大内存区域 JVM内存区域最粗略的划分可以分为 堆 和 栈 &#xff0c;当然&#xff0c;按照虚拟机规范&#xff0c;可以划分为以下几个区域&#xff1a; JVM内存分为线程独享区和线程共享区&#xff0c; 其中 方法区 和 堆 是线程共享区&#xff0c; 虚拟机栈, 本地方法…

HTMLCSS(入门)

HTML <html> <head><title>第一个页面</title></head><body>键盘敲烂&#xff0c;工资过万</body> </html> <!DOCTYPE>文档类型声明&#xff0c;告诉浏览器使用哪种HTML版本显示网页 <!DOCTYPE html>当前页面采取…

云桌面运维工程师

一 深信服驻场工程师 1 深信服AC、AF、AD、NGAF、WOC Atrust、WAF项目实施经验者优先考虑。 负责云桌面POC测试 部署和配置&#xff1a;设置云桌面基础设施&#xff0c;包括虚拟化平台、云桌面管理软件和相关组件。确保正确配置网络、存储和安全设置。 用户体验&#xff1…

k8s离线安装安装skywalking9.4

目录 概述资源下载Skywalking功能介绍成果速览实践rbacoapoap-svcuiui-svc 结束 概述 k8s 离线安装安装 skywalking9.4 版本&#xff0c;环境&#xff1a;k8s版本为&#xff1a;1.27.x 、spring boot 2.7.x spring cloud &#xff1a;2021.0.5 、spring.cloud.alibab&#xff1…

滚动表格(vue版本)【已验证可正常运行】

演示图 注&#xff1a;以下代码来自于GPT4o&#xff1a;国内官方直连GPT4o 代码 <template><div><div class"alarmList-child" ref"alarmList" mouseenter.stop"autoRoll(1)" mouseleave.stop"autoRoll()"><div…

无服务器【Serverless】架构的深度剖析:组件介绍、优缺点与适用场景

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、云计算的发展趋势 2、无服务器计算简介 二、无服务…

外挂级OCR神器:免费文档解析、表格识别、手写识别、古籍识别、PDF转Word

TextIn Tools是一款免费的在线OCR工具&#xff0c;支持快速准确的文字和表格识别&#xff0c;手写、古籍识别&#xff0c;提供PDF转Markdown大模型辅助工具&#xff0c;同时支持PDF、WORD、EXCEL、JPG、PPT等各类格式文件的转化。 TextIn Tools特点 免费&#xff1a;所有产品提…

Mysql 的第二次作业

一、数据库 1、登陆数据库 2、创建数据库zoo 3、修改数据库zoo字符集为gbk 4、选择当前数据库为zoo 5、查看创建数据库zoo信息 6、删除数据库zoo 1&#xff09;登陆数据库。 打开命令行&#xff0c;输入登陆用户名和密码。 mysql -uroot -p123456 ​ 2&#xff09;切换数据库…

Git学习(常用的一些命令)

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 配置相关&#xff1a; 创建与克隆仓库&#xff1a; 基本操作&#xff1a; 分支操作&#xff1a; 远程仓库操作&#xff1a…

深度学习基准模型Transformer

深度学习基准模型Transformer 深度学习基准模型Transformer&#xff0c;最初由Vaswani等人在2017年的论文《Attention is All You Need》中提出&#xff0c;是自然语言处理&#xff08;NLP&#xff09;领域的一个里程碑式模型。它在许多序列到序列&#xff08;seq2seq&#xf…

金融(基金)行业信创国产化特点及统一身份认证解决方案

金融业在政策支持及自主驱动下&#xff0c;金融信创取得快速发展。从2020年开始&#xff0c;三期试点已扩容至5000余家&#xff0c;进入全面推广阶段。而基金行业信创建设与银行、证券、保险这些试点行业相比&#xff0c;进展较为缓慢。 基金行业信创当前面临的问题 与多家基…

React Native 和 Flutter 的开发对比

React Native (RN) 和 Flutter 都是用于构建跨平台移动应用程序的流行框架。两者都具有各自的优势和劣势&#xff0c;选择哪个框架取决于您的具体需求和项目。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 以下是一些 RN 和 Flutter…

WPF在.NET9中的重大更新:Windows 11 主题

在2023年的2月20日&#xff0c;在WPF的讨论区&#xff0c;WPF团队对路线的优先级发起了一次讨论。 对三个事项发起了投票。 第一个是Windows 11 主题 第二个是更新的控件 第三个是可空性注释 最终Windows 11 主题得票最高&#xff0c;WPF团队2023-2024的工作优先级就是Windows…

Hadoop页面报错Permission denied: user=dr.who, access....

1、临时解决 hdfs dfs -chmod -R 777 /这种方法&#xff0c;存在一个不足&#xff0c;就是后面重新创建的文件夹&#xff0c;页面进行删除的时候&#xff0c;依然报这个错。 但是&#xff0c;对于应付紧急客户需求&#xff0c;可以临时用一下。 2、永久解决 查看页面的Owner…

python-图像旋转(赛氪OJ)

[题目描述] 输入一个 n 行 m 列的黑白图像&#xff0c;将它顺时针旋转 9090 度后输出。输入&#xff1a; 第一行包含两个整数 n 和 m&#xff0c;表示图像包含像素点的行数和列数。1≤n≤100&#xff0c;1≤m≤100。 接下来 n 行&#xff0c;每行 m 个整数&#xff0c;表示图像…

Vue3从入门到精通(三)

vue3插槽Slots 在 Vue3 中&#xff0c;插槽&#xff08;Slots&#xff09;的使用方式与 Vue2 中基本相同&#xff0c;但有一些细微的差异。以下是在 Vue3 中使用插槽的示例&#xff1a; // ChildComponent.vue <template><div><h2>Child Component</h2&…

51单片机-让一个LED灯闪烁、流水灯(涉及:自定义单片机的延迟时间)

目录 设置单片机的延迟&#xff08;睡眠&#xff09;函数查看单片机的时钟频率设置系统频率、定时长度、指令集 完整代码生成HEX文件下载HEX文件到单片机流水灯代码 (自定义延迟时间) 设置单片机的延迟&#xff08;睡眠&#xff09;函数 查看单片机的时钟频率 检测前单片机必…

介绍 pg_later:受 Snowflake 启发的 Postgres 异步查询#postgresql认证

#PG培训#PG考试#postgresql培训#postgresql考试 为什么要使用异步查询&#xff1f; 想象一下&#xff0c;您启动了一项长期维护工作。您在执行过程中离开&#xff0c;但回来后发现&#xff0c;由于笔记本电脑关机&#xff0c;该工作在几个小时前就被中断了。您不希望这种情况…

大学生竞赛管理系统-计算机毕业设计源码37276

大学生竞赛管理系统的设计与实现 摘 要 随着教育信息化的不断发展&#xff0c;大学生竞赛已成为高校教育的重要组成部分。传统的竞赛组织和管理方式存在着诸多问题&#xff0c;如信息不透明、效率低下、管理不便等。为了解决这些问题&#xff0c;提高竞赛组织和管理效率&#x…