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)


目录
相关文章
|
18天前
|
存储 分布式计算 API
什么是批处理?批处理系统是怎么运转的?
本文深入浅出地解析批处理:它并非“老古董”,而是支撑报表生成、推荐系统、银行结算等关键业务的底层引擎。文章厘清其“积攒+批量执行”的本质,详解调度、计算、存储、容错四大核心组件,并以FineDataLink为例,展示如何通过可视化编排、内嵌Spark、多源接入与API发布,让批处理更高效、易用。
|
3天前
|
人工智能 API 网络安全
2026年阿里云部署OpenClaw(原Clawdbot)完整操作指南
在AI办公自动化与智能代理工具普及的当下,OpenClaw(前身为Clawdbot、Moltbot)凭借自然语言理解、多任务自动化及多工具集成的核心能力,成为个人处理办公事务与小型团队优化协作流程的实用工具。该工具可适配文档处理、日程管理、代码生成、任务分配等多种场景,而阿里云提供的专属部署方案,通过预配置环境与简化流程设计,大幅降低了部署门槛,即便是零基础用户也能完成操作。本文将基于2026年阿里云最新服务配置,详细拆解OpenClaw的一键部署流程,同时补充本地部署作为备选方案,并梳理常见问题排查方法,确保用户能够顺利落地这项服务。
121 1
|
18天前
|
存储 人工智能 监控
什么是可信数据空间?为什么可信数据空间是数据共享的关键?
可信数据空间是解决数据共享中安全与合规难题的关键。它通过数据主权保障、技术互信和协同计算,实现跨组织安全数据协作,广泛应用于金融、医疗、企业内部门户等领域,是打破数据孤岛、构建数字信任的基石。
|
1月前
|
Kubernetes 应用服务中间件 API
应对 Nginx Ingress 退役,是时候理清这些易混淆的概念了
本文希望提供一种更简单的方式,来理解这些容易混淆的技术概念:Nginx、Ingress、Ingress Controller、Ingress API、Nginx Ingress、Higress、Gateway API。
771 70
|
25天前
|
存储 缓存 数据建模
StarRocks + Paimon: 构建 Lakehouse Native 数据引擎
12月10日,Streaming Lakehouse Meetup Online EP.2重磅回归,聚焦StarRocks与Apache Paimon深度集成,探讨Lakehouse Native数据引擎的构建。活动涵盖架构统一、多源联邦分析、性能优化及可观测性提升,助力企业打造高效实时湖仓一体平台。
318 39
|
1天前
|
人工智能 弹性计算 数据可视化
2026年阿里云新老用户部署 OpenClaw(Clawdbot) 流程步骤和使用指南汇总
OpenClaw作为阿里云生态下轻量化、高适配的AI自动化代理工具,2026年版本在部署便捷性、功能扩展性上实现全面升级,成为阿里云用户实现“云端AI自动化”的核心选择。无论是个人用户快速落地基础功能,还是企业用户定制化适配业务场景,掌握标准化的部署流程与高效的使用方法都是关键。本文将从部署前准备、阿里云一键部署全流程、核心功能使用、进阶配置、常见问题解决五大维度,为阿里云用户整理一份完整的OpenClaw部署与使用指南,包含实操代码命令与场景化使用技巧,覆盖从0到1的全生命周期管理。
84 14
|
5天前
|
缓存 负载均衡 安全
Nginx 反向代理:原理、优势与配置指南
Nginx反向代理是核心服务器架构技术,可实现请求转发、负载均衡、高可用与安全防护。它隐藏后端服务器,自动剔除故障节点,并支持SSL终止、缓存等高级功能,配置简洁灵活,广泛应用于高性能Web系统。
102 13
|
18天前
|
中间件 Python
django发邮件
本文详解Django邮件配置全流程:①QQ邮箱开启SMTP并获取授权码;②settings.py配置SMTP参数;③views中调用send_mail发送邮件;④URL路由测试。附进阶方案:通过中间件自动捕获异常并邮件告警。
40 7
AcWing 764. 输出字符串
AcWing 764. 输出字符串
89 0
AcWing 764. 输出字符串
|
编解码 缓存 前端开发
从零打造一个Web地图引擎
从零打造一个Web地图引擎
1069 0
从零打造一个Web地图引擎