django上传文件注意事项

简介: 本文介绍文件上传的完整实现流程:前端form需设置POST、multipart/form-data及file类型input;后端通过request.FILES获取文件流并保存;配置MEDIA路径与路由;models.py中定义自定义上传路径函数,实现文件命名与存储管理。

一、前端HTML:

1、form中必须为POST方式method="post"

<form method="post"...

2、form中必须有enctype="multipart/form-data"

<form enctype="multipart/form-data"...

3、表单input type必须为filetype="file"

<form action="/pic/upload/" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <p><lable>标题:</lable><input type="text" name="title"></p>
    <p><lable>选择图片:</lable><input type="file" name="myfile"></p>
    <p><input type="submit" value="提交"></p>
</form>

二、后端views视图:

  • 取文件框里的数据:request.FILES方法
  • file绑定文件流对象
  • file.name文件名
  • file.file 文件的字节流数据
def order_upload(request):
    if request.method == "GET":
        return render(request,'order_upload.html')
    elif request.method == "POST":
        title = request.POST.get('title')
        myfile = request.FILES.get('myfile')
        models.upload_content.objects.create(title=title,picture=myfile)
        return HttpResponse('--upload is ok--')

三、路由配置

1、在主路由urls.py最后添加:

from django.urls import path,
from django.conf import settings
from django.conf.urls.static import static

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

2、在settings.py中添加用户上传资源路径为media:

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

3、项目根目录手动创建media文件夹


四、models.py中:

def user_directory_path(instance, filename):
    """自定义文件名的函数"""
    # 文件将被保存的路径和文件名,例如:uploads/2023/04/12/example_20230412153045.jpg
    ext = filename.split('.')[-1]
    filename = f"{os.path.splitext(filename)[0]}_{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}.{ext}"
    # 路径可以包含子目录来组织文件,例如按年份或月份分文件夹
    return os.path.join('uploads', datetime.datetime.now().strftime('%Y/%m/%d'), filename)

class upload_content(models.Model):
    """M层upload_to=user_directory_path"""
    title = models.CharField(verbose_name="文件标题",max_length=200)
    picture = models.FileField(upload_to=user_directory_path)


目录
相关文章
|
9月前
|
存储 分布式计算 API
什么是批处理?批处理系统是怎么运转的?
本文深入浅出地解析批处理:它并非“老古董”,而是支撑报表生成、推荐系统、银行结算等关键业务的底层引擎。文章厘清其“积攒+批量执行”的本质,详解调度、计算、存储、容错四大核心组件,并以FineDataLink为例,展示如何通过可视化编排、内嵌Spark、多源接入与API发布,让批处理更高效、易用。
|
芯片
计算机组成原理实验二 存储器实验(上)
计算机组成原理实验二 存储器实验
2089 0
|
9月前
|
数据采集 人工智能 IDE
告别碎片化日志:一套方案采集所有主流 AI 编程工具
本文介绍了一套基于MCP架构的轻量化、多AI工具代码采集方案,支持CLI、IDE等多类工具,实现用户无感、可扩展的数据采集,已对接Aone日志平台,助力AI代码采纳率分析与研发效能提升。
1222 46
告别碎片化日志:一套方案采集所有主流 AI 编程工具
|
9月前
|
传感器 运维 算法
数字孪生项目的开发
数字孪生项目融合物理世界与虚拟空间,涵盖需求规划、高精度建模、数据集成、智能分析及部署运维五大阶段,结合三维引擎与实时数据技术,实现设备、工厂乃至城市的可视化监控、预测性维护与智能决策,推动工业与城市数字化转型。#数字孪生 #WebGL开发 #软件外包公司
|
9月前
|
人工智能 运维 监控
进阶指南:BrowserUse + AgentRun Sandbox 最佳实践
本文将深入讲解 BrowserUse 框架集成、提供类 Manus Agent 的代码示例、Sandbox 高级生命周期管理、性能优化与生产部署策略。涵盖连接池设计、安全控制、可观测性建设及成本优化方案,助力构建高效、稳定、可扩展的 AI 浏览器自动化系统。
1167 47
|
6月前
|
安全 JavaScript 前端开发
OpenClaw又又又危!Axios npm被投毒,植入全平台木马
Axios npm包遭供应链投毒,1.14.1与0.30.4版本含恶意依赖plain-crypto-js@4.2.1,安装时自动下载运行远控木马(Windows/Linux/macOS全平台),回连域名sfrclak.com。影响广泛,已下架。建议立即排查并封禁相关域名及版本。
|
7月前
阿里云服务器怎么开发票?图文教程来了
阿里云购服务器后,可登录用户中心→发票管理开具电子/纸质发票。抬头以实名信息为准(个人或企业),支持普票与专票。首次需先设置抬头,再勾选订单开票。税率通常6%(云产品)或13%(硬件)。电子发票具同等法律效力。详见官方指南。
1304 1
|
9月前
|
安全 API iOS开发
《iOS沙盒Python适配进阶指南:从静态兼容到自适应运行体系》
本文聚焦iOS沙盒环境下Python适配的核心技术要点,从沙盒与Python动态特性的底层冲突切入,剖析了解释器与系统内核适配断层、扩展模块框架化约束、标准库隐性缺失、原生应用交互壁垒等核心限制。结合实际开发思考,提出静态编译重构、功能等效重构、语义对齐桥接层搭建等针对性应对策略,同时阐述了解释器定制化与系统规则适配双向优化的长期演进思路,为开发者提供了从底层原理到实战落地的完整适配逻辑,助力实现Python在iOS沙盒中的稳定兼容与自适应运行。
225 4
|
9月前
|
存储 弹性计算 人工智能
2026年阿里云免费云服务器、免费云产品指南:领取教程、资源解析与避坑建议
阿里云长期推出免费云产品试用体系,覆盖从基础算力到创新工具的全场景需求,为个人开发者、学生及初创企业降低了上云门槛。但免费资源背后存在配置限制、合规要求等细节问题,需结合自身场景理性选择。以下从资源矩阵、使用体验、避坑技巧及适用场景四方面,用通俗语言详细解析,帮助高效利用免费资源。
|
11月前
|
API
拼多多商品列表API使用指南
拼多多商品列表API是拼多多开放平台的核心接口,支持关键词搜索、类目筛选、价格与销量排序,并提供分页查询功能,便于高效获取海量商品基本信息,适用于电商数据分析与商品聚合等场景。

热门文章

最新文章