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)


目录
相关文章
|
22天前
|
存储 分布式计算 API
什么是批处理?批处理系统是怎么运转的?
本文深入浅出地解析批处理:它并非“老古董”,而是支撑报表生成、推荐系统、银行结算等关键业务的底层引擎。文章厘清其“积攒+批量执行”的本质,详解调度、计算、存储、容错四大核心组件,并以FineDataLink为例,展示如何通过可视化编排、内嵌Spark、多源接入与API发布,让批处理更高效、易用。
|
30天前
|
数据采集 人工智能 IDE
告别碎片化日志:一套方案采集所有主流 AI 编程工具
本文介绍了一套基于MCP架构的轻量化、多AI工具代码采集方案,支持CLI、IDE等多类工具,实现用户无感、可扩展的数据采集,已对接Aone日志平台,助力AI代码采纳率分析与研发效能提升。
421 46
告别碎片化日志:一套方案采集所有主流 AI 编程工具
|
22天前
|
机器学习/深度学习 编解码 算法
YOLO26改进 - C2PSA | C2PSA融合TSSA(Token Statistics Self-Attention)令牌统计自注意力,优化遮挡目标感知
本文提出Token统计自注意力(TSSA),通过动态分组与低秩投影实现线性复杂度注意力机制。基于MCR²目标推导,摒弃传统成对相似度计算,显著提升效率。集成于YOLO26的C2PSA模块后,实验验证其在目标检测中性能优越,代码已开源。
|
22天前
|
存储 人工智能 监控
什么是可信数据空间?为什么可信数据空间是数据共享的关键?
可信数据空间是解决数据共享中安全与合规难题的关键。它通过数据主权保障、技术互信和协同计算,实现跨组织安全数据协作,广泛应用于金融、医疗、企业内部门户等领域,是打破数据孤岛、构建数字信任的基石。
|
23天前
|
机器学习/深度学习 人工智能 自然语言处理
超越文本:多模态大模型如何重塑AI感知能力
超越文本:多模态大模型如何重塑AI感知能力
234 143
|
30天前
|
人工智能 运维 监控
进阶指南:BrowserUse + AgentRun Sandbox 最佳实践
本文将深入讲解 BrowserUse 框架集成、提供类 Manus Agent 的代码示例、Sandbox 高级生命周期管理、性能优化与生产部署策略。涵盖连接池设计、安全控制、可观测性建设及成本优化方案,助力构建高效、稳定、可扩展的 AI 浏览器自动化系统。
460 47
|
30天前
|
存储 缓存 数据建模
StarRocks + Paimon: 构建 Lakehouse Native 数据引擎
12月10日,Streaming Lakehouse Meetup Online EP.2重磅回归,聚焦StarRocks与Apache Paimon深度集成,探讨Lakehouse Native数据引擎的构建。活动涵盖架构统一、多源联邦分析、性能优化及可观测性提升,助力企业打造高效实时湖仓一体平台。
346 39
|
1月前
|
人工智能 弹性计算 运维
探秘 AgentRun丨为什么应该把 LangChain 等框架部署到函数计算 AgentRun
阿里云函数计算 AgentRun,专为 AI Agent 打造的一站式 Serverless 基础设施。无缝集成 LangChain、AgentScope 等主流框架,零代码改造即可享受弹性伸缩、企业级沙箱、模型高可用与全链路可观测能力,助力 Agent 高效、安全、低成本地落地生产。
340 48
|
存储 缓存 NoSQL
阿里云 Tair KVCache 仿真分析:高精度的计算和缓存模拟设计与实现
阿里云 Tair 推出 KVCache-HiSim,首个高保真 LLM 推理仿真工具。在 CPU 上实现<5%误差的性能预测,成本仅为真实集群的1/39万,支持多级缓存建模与 SLO 约束下的配置优化,助力大模型高效部署。
|
15天前
|
监控 API
金融行情系统中,API 接入常见的 5 个工程问题
本文以黄金、白银等高波动贵金属行情为例,剖析金融系统在API接入层面的五大典型工程问题:数据延迟放大、单点依赖风险、多源维护成本高、异常处理分散、缺乏统一接入层。强调统一、可控、可演进的API设计对系统稳定性与长期演进的关键价值。