尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

django文件对象是什么?

django文件对象是什么?
📅 发布时间:2026/6/30 22:50:46

Django 抽象出了一套“文件处理体系”,核心是:

  • Django 所有文件类的基类
  • 提供统一的接口用于:
    • 读取

    • 写入

    • 迭代

    • 存储到 Storage 后端(本地/OSS/S3)

使用FileField/ImageField来构造:

1

2

classMyModel(models.Model):

file=models.FileField(upload_to='files/')

这个字段对文件内容不做存储,只存储文件路径字符串。

真正的文件保存由:

  • django.core.files.File

  • 一套 Storage(默认本地文件系统)

1

obj.file.save('result.txt', ContentFile('hello world'))

此时 Django 会:

  1. 把 ContentFile 写入本地或 OSS 或 S3

  2. 把保存后的路径写到数据库字段file

二、不同场景下该用哪种 Django 文件对象

场景 1:用户上传文件(常见 Web/DRF)

1

2

3

defupload(request):

f=request.FILES['file']# InMemoryUploadedFile 或 TemporaryUploadedFile

print(f.name, f.size, f.content_type)

场景 2:动态生成一个文件(如 CSV/JSON/图片),并保存到 FileField

1

2

3

4

fromdjango.core.files.baseimportContentFile

content="name,age\nTom,18\nJerry,20"

obj.file.save("data.csv", ContentFile(content))

场景 3:用 Python open 打开的本地文件,写入 FileField

1

2

3

4

fromdjango.core.filesimportFile

withopen('local.txt','rb') as f:

obj.file.save('copy.txt',File(f))

三、几种文件存储的对应配置

1.本地存储:我就想存到服务器磁盘

Django 默认就是本地磁盘文件存储,用的类是:

1

DEFAULT_FILE_STORAGE='django.core.files.storage.FileSystemStorage'

在settings.py里:

1

2

3

4

5

importos

BASE_DIR=os.path.dirname(os.path.dirname(__file__))

MEDIA_ROOT=os.path.join(BASE_DIR,'media')# 真实文件保存路径

MEDIA_URL='/media/'# 浏览器访问前缀

模型配置:

1

2

classMyModel(models.Model):

file=models.FileField(upload_to='uploads/')

最后

1

obj.file.save('a.txt', ContentFile('hello'))

实际效果是:

  • 文件会被保存到:MEDIA_ROOT / uploads / a.txt
  • 例如:/project_root/media/uploads/a.txt
  • 数据库里的字段只保存相对路径:uploads/a.txt
  • 浏览器访问地址是:MEDIA_URL + 'uploads/a.txt'→/media/uploads/a.txt

访问文件,只需要在url.py加一个静态路由:

1

2

3

4

5

6

fromdjango.confimportsettings

fromdjango.conf.urls.staticimportstatic

urlpatterns=[

# ... 你的其他 URL

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

2.上云存储:S3/OSS/COS/BOS 等

1)用现成库(如 django-storages + S3 为例),需要安装:

1

pip install django-storages boto3

settings.py配置:

1

2

3

4

5

6

7

8

9

10

11

12

INSTALLED_APPS=[

# ...

'storages',

]

DEFAULT_FILE_STORAGE='storages.backends.s3boto3.S3Boto3Storage'

AWS_ACCESS_KEY_ID='你的Key'

AWS_SECRET_ACCESS_KEY='你的Secret'

AWS_STORAGE_BUCKET_NAME='你的bucket名字'

AWS_S3_ENDPOINT_URL='https://s3.amazonaws.com'# 若用其他云厂商,写他们给的S3兼容endpoint

MEDIA_URL='https://你的bucket域名/'# 访问 URL 前缀

模型不需要改动:

1

2

classMyModel(models.Model):

file=models.FileField(upload_to='files/')

业务代码:

1

obj.file.save('a.txt', ContentFile('hello cloud'))

Django 会:

相关新闻

  • 对称加密算法的混淆层(S盒)密码学指标详细介绍
  • 限峰功率最大熵定理的理论推导和MATLAB仿真实现(P124302075刘家隆)
  • TVA:连接数字与物理世界的智能底座(3)

最新新闻

  • 从 Hugging Face 到生产集群:开源模型部署的全链路实战
  • 何为实战派AI落地培训?任务驱动式AI特训营完整体系拆解
  • 2026年国内口碑好的电力测功机销售厂家,究竟有哪些值得关注?
  • 2026年6月最新全球TOP5小程序商城开发工具盘点!含零代码SAAS、AI编程、源码定制
  • 如何选择跨平台文本编辑器:Notepad--的完整指南
  • 【极速入门数模电路】CMOS推挽原理、TTL/CMOS电平详解、七大基础逻辑门

日新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号