首页 > 其他分享 >Django上传图片实操不会上传图片的拿走

Django上传图片实操不会上传图片的拿走

时间:2024-05-26 09:03:54浏览次数:20  
标签:文件 Django static import filename 上传 图片

上传图片

  • 当Django在处理文件上传的时候,文件数据被保存在request.FILES
  • FILES中的每个键为<input type="file" name="" />中的name
  • 注意:FILES只有在请求的方法为POST 且提交的<form>带有enctype="multipart/form-data" 的情况下才会包含数据。
  • 否则,FILES 将为一个空的类似于字典的对象

(1) 自定义上传的模板代码

<html>
<head>
    <title>文件上传</title>
</head>
<body>
    <form method="post" action="upload/" enctype="multipart/form-data">
        <input type="text" name="title"><br>
        <input type="file" name="pic"/><br>
        <input type="submit" value="上传">
    </form>
</body>
</html>
  • 自定义上传的视图代码
from django.shortcuts import render
from django.http import HttpResponse
from PIL import Image
import time,os

def upload(request):
    '''执行图片的上传'''
    myfile = request.FILES.get("mypic",None)
    if not myfile:
        return HttpResponse("没有上传文件信息")
    filename = str(time.time())+"."+myfile.name.split('.').pop()
    destination = open("./static/pics/"+filename,"wb+")
    for chunk in myfile.chunks():      # 分块写入文件  
        destination.write(chunk)  
    destination.close()

    # 执行图片缩放
    im = Image.open("./static/pics/"+filename)
    # 缩放到75*75(缩放后的宽高比例不变):
    im.thumbnail((75, 75))
    # 把缩放后的图像用jpeg格式保存: 
    im.save("./static/pics/s_"+filename,None)

    #执行图片删除
    #os.remove("./static/pics/"+filename)

    return HttpResponse("上传成功!图片:"+filename)

(2) 使用模型处理上传文件:

将属性定义成models.ImageField类型

pic=models.ImageField(upload_to='cars/')
  • 注意:如果属性类型为ImageField获使用图片处理,那么就需要安装包Pillow
pip install Pillow
  • 图片存储路径
    • 在项目根目录下创建media文件夹
    • 图片上传后,会被保存到“/static/media/cars/图片文件”
    • 打开settings.py文件,增加media_root项
MEDIA_ROOT=os.path.join(BASE_DIR,"static/media")
  • 使用django后台管理,遇到ImageField类型的属性会出现一个file框,完成文件上传

标签:文件,Django,static,import,filename,上传,图片
From: https://blog.csdn.net/xyh2004/article/details/139207504

相关文章

  • 自适应/调整图片大小为页面大小
    SubResizeImagesToPageWidth()Application.ScreenUpdating=True'获取当前文档Setdoc=ActiveDocument'获取页面宽度并减去页边距Withdoc.PageSetuppgWidth=.PageWidth-.LeftMargin-.RightMarginEndWith'......
  • Django分页操作实例
    分页操作Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中Paginator对象Paginator(列表,int):返回分页对象,参数为列表数据,每面数据的条数属性count:对象总数num_pages:页面总数page_range:页码列表,从1开始,例如[1,2,3,4]方法page(num):下标以1开始......
  • ASP.NET MVC使用Layui选择多图片上传
    前言多图上传在一些特殊的需求中我们经常会遇到,其实多图上传的原理大家都有各自的见解。对于Layui多图上传和我之前所说的通过js获取文本框中的文件数组遍历提交的原理一样,只不过是Layui中的upload.render方法已经帮我们封装好了,我们只管调用即可,也就是说你选中了几张图片,那么......
  • react框架对Excel文件进行上传和导出
    1.首先需要安装xlsx第三方的库库引入插件npminstallxlsx在react引入import*asXLSXfrom'xlsx';1,首先设置jsx部分的 以下代码包含有导入excel文件和导出excel文件,读着可以根据需要,自己选择想要实现的功能 代码如下(示例)://importReactfrom'react';importR......
  • Django+Vue构建前后端分离开发模式
    将Django作为后端,Vue作为前端进行前后端分离开发是一个常见的模式。下面是一个完整的步骤,以构建一个Django和Vue整合的项目。1.准备Django后端安装必要的库确保你已经安装了Django和DjangoRESTframework:pipinstalldjangodjangorestframework配置Django项目在myproj......
  • Python小白必备!清华大牛整理的《Django零基础入门到精通》手册
    Django是Python社区的两大最受欢迎的Web框架之一(另一个是Flask)。凭借功能强大的脚手架和诸多开箱即用的组件,可以使你能够以最小的代价构建和维护高质量的Web应用。从好的方面来看,Web开发激动人心且富于创造性;从另一面来看,它却是份繁琐而令人生厌的工作。通过减少重复......
  • 通过K-means提取图片主颜色
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、基本流程是什么?二、使用步骤1.引入库2.从图像中提取主要颜色,并生成十六进制颜色列表3.生成颜色簇的直方图4.生成颜色分布的饼图,并保存或显示5.将颜色数据保存到Excel文件中6.批量处理文件......
  • .NET Core中给上传图片的添加水印
    一.安装System.Drawing.Common库工具->NuGet包管理->程序包管理控制台输入命令Install-PackageSystem.Drawing.Common二.代码案例实现usingMicrosoft.AspNetCore.Http;usingMicrosoft.AspNetCore.Mvc;usingSystem.Drawing;usingSystem.Drawing.Imaging;usingSy......
  • Django中型项目的目录结构和一个应用创建启动示例
    一个中等Django项目的目录结构包含多个应用、配置文件、静态文件和模板文件等。myproject/├──manage.py#Django项目管理脚本,用于运行服务器、迁移数据库等管理命令├──myproject/#项目配置目录,包含全局配置文件和静态、模板文件│├──__init__.......
  • Qt支持heic图片显示
    目录一、背景二、Heic图片显示heif库安装图片显示三、参考文章原文链接:Qt支持heic图片显示一、背景小孩子两岁了,最近在着手给娃做生活照纪念相册,然后就是某宝上各种聊,了解到的相册种类也是各异,价格更是良莠不齐,小几十到小几百都有,一时间还是难以下手。刚过完年那一阵偶然一次看......