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)


目录
相关文章
|
25天前
|
存储 分布式计算 API
什么是批处理?批处理系统是怎么运转的?
本文深入浅出地解析批处理:它并非“老古董”,而是支撑报表生成、推荐系统、银行结算等关键业务的底层引擎。文章厘清其“积攒+批量执行”的本质,详解调度、计算、存储、容错四大核心组件,并以FineDataLink为例,展示如何通过可视化编排、内嵌Spark、多源接入与API发布,让批处理更高效、易用。
|
25天前
|
存储 人工智能 监控
什么是可信数据空间?为什么可信数据空间是数据共享的关键?
可信数据空间是解决数据共享中安全与合规难题的关键。它通过数据主权保障、技术互信和协同计算,实现跨组织安全数据协作,广泛应用于金融、医疗、企业内部门户等领域,是打破数据孤岛、构建数字信任的基石。
|
存储 数据安全/隐私保护
音乐宿主软件有哪些?哪个最好用?FL Studio/Cubase/Studio one
现如今市面上的音乐宿主软件有很多,同时每个音乐宿主软件都有其优缺点,选择哪款音乐宿主软件,就成了新入门小伙伴面临的一个难题,所以今天和大家分享一下,音乐宿主软件对比,音乐宿主软件需要什么配置。
6935 0
|
1月前
|
Kubernetes 应用服务中间件 API
应对 Nginx Ingress 退役,是时候理清这些易混淆的概念了
本文希望提供一种更简单的方式,来理解这些容易混淆的技术概念:Nginx、Ingress、Ingress Controller、Ingress API、Nginx Ingress、Higress、Gateway API。
833 74
|
1月前
|
数据采集 监控 数据可视化
快速上手:LangChain + AgentRun 浏览器沙箱极简集成指南
AgentRun Browser Sandbox 是基于云原生函数计算的浏览器沙箱服务,为 AI Agent 提供安全、免运维的浏览器环境。通过 Serverless 架构与 CDP 协议支持,实现网页抓取、自动化操作等能力,并结合 VNC 实时可视化,助力大模型“上网”交互。
515 43
|
24天前
|
中间件 Python
django发邮件
本文详解Django邮件配置全流程:①QQ邮箱开启SMTP并获取授权码;②settings.py配置SMTP参数;③views中调用send_mail发送邮件;④URL路由测试。附进阶方案:通过中间件自动捕获异常并邮件告警。
43 7
|
25天前
|
安全 API iOS开发
《iOS沙盒Python适配进阶指南:从静态兼容到自适应运行体系》
本文聚焦iOS沙盒环境下Python适配的核心技术要点,从沙盒与Python动态特性的底层冲突切入,剖析了解释器与系统内核适配断层、扩展模块框架化约束、标准库隐性缺失、原生应用交互壁垒等核心限制。结合实际开发思考,提出静态编译重构、功能等效重构、语义对齐桥接层搭建等针对性应对策略,同时阐述了解释器定制化与系统规则适配双向优化的长期演进思路,为开发者提供了从底层原理到实战落地的完整适配逻辑,助力实现Python在iOS沙盒中的稳定兼容与自适应运行。
|
5月前
|
Linux 虚拟化 iOS开发
macOS Sonoma 14.8 (23J21) Boot ISO 原版可引导镜像下载
macOS Sonoma 14.8 (23J21) Boot ISO 原版可引导镜像下载
3100 0
macOS Sonoma 14.8 (23J21) Boot ISO 原版可引导镜像下载
|
12月前
|
弹性计算 Ubuntu Linux
一键部署OpenWebUI+Ollama到阿里云ECS,轻松运行DeepSeek!(保姆级教程)
在当今数据驱动的时代,快速部署和管理大模型成为企业的关键需求。阿里云提供了一键部署OpenWebUI+Ollama的便捷方案,支持本地大模型运行和管理。用户也可以选择连接阿里云百炼的在线模型。
一键部署OpenWebUI+Ollama到阿里云ECS,轻松运行DeepSeek!(保姆级教程)

热门文章

最新文章