文件储存API

获取当前的储存类

Django提供了两个便捷的方法来获取当前的储存类:

class DefaultStorage[source]

DefaultStorage 提供对当前的默认储存系统的延迟访问,像DEFAULT_FILE_STORAGE中定义的那样。DefaultStorage 内部使用了get_storage_class()

get_storage_class([import_path=None])[source]

返回实现储存API的类或者模块。

当没有带着import_path 参数调用的时候, get_storage_class 会返回当前默认的储存系统,像DEFAULT_FILE_STORAGE中定义的那样。如果提供了import_pathget_storage_class会尝试从提供的路径导入类或者模块,并且如果成功的话返回它。如果导入不成功会抛出异常。

FileSystemStorage类

class FileSystemStorage([location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None])[source]

FileSystemStorage类在本地文件系统上实现了基本的文件存储功能。它继承自Storage ,并且提供父类的所有公共方法的实现。

location

储存文件的目录的绝对路径。默认为MEDIA_ROOT设置的值。

base_url

在当前位置提供文件储存的URL。默认为MEDIA_URL设置的值。

file_permissions_mode

文件系统的许可,当文件保存时会接收到它。默认为FILE_UPLOAD_PERMISSIONS

New in Django 1.7:新增了file_permissions_mode属性。之前,文件总是会接收到FILE_UPLOAD_PERMISSIONS许可。

directory_permissions_mode

文件系统的许可,当目录保存时会接收到它。默认为FILE_UPLOAD_DIRECTORY_PERMISSIONS

New in Django 1.7:新增了directory_permissions_mode属性。之前,目录总是会接收到FILE_UPLOAD_DIRECTORY_PERMISSIONS许可。

注意

FileSystemStorage.delete()在提供的文件名称不存在的时候并不会抛出任何异常。

Storage类

class Storage[source]

Storage类为文件的存储提供了标准化的API,并带有一系列默认行为,所有其它的文件存储系统可以按需继承或者复写它们。

注意

对于返回原生datetime对象的方法,所使用的有效时区为os.environ['TZ']的当前值。要注意它总是可以通过Django的TIME_ZONE来设置。

accessed_time(name)[source]

返回包含文件的最后访问时间的原生datetime对象。对于不能够返回最后访问时间的储存系统,会抛出NotImplementedError异常。

created_time(name)[source]

返回包含文件创建时间的原生datetime对象。对于不能够返回创建时间的储存系统,会抛出NotImplementedError异常。

delete(name)[source]

删除name引用的文件。如果目标储存系统不支持删除操作,会抛出NotImplementedError异常。

exists(name)[source]

如果提供的名称所引用的文件在文件系统中存在,则返回True,否则如果这个名称可用于新文件,返回False

get_available_name(name, max_length=None)[source]

返回基于name参数的文件名称,它在目标储存系统中可用于写入新的内容。

如果提供了max_length,文件名称长度不会超过它。如果不能找到可用的、唯一的文件名称,会抛出SuspiciousFileOperation 异常。

如果name命名的文件已存在,一个下划线加上随机7个数字或字母的字符串会添加到文件名称的末尾,扩展名之前。

Changed in Django 1.7:之前,下划线和一位数字(比如"_1","_2",以及其他)会添加到文件名称的末尾,直到目标目录中发现了可用的名称。一些恶意的用户会利用这一确定性的算法来进行dos攻击。这一变化也在1.6.6, 1.5.9, 和 1.4.14中出现。
Changed in Django 1.8:新增了max_length参数。

get_valid_name(name)[source]

返回基于name参数的文件名称,它适用于目标储存系统。

listdir(path)[source]

列出特定目录的所有内容,返回一个包含2元组的列表;第一个元素是目录,第二个是文件。对于不能够提供列表功能的储存系统,抛出NotImplementedError异常。

modified_time(name)[source]

返回包含最后修改时间的原生datetime对象。对于不能够返回最后修改时间的储存系统,抛出NotImplementedError异常。

open(name, mode='rb')[source]

通过提供的name打开文件。注意虽然返回的文件确保为File对象,但可能实际上是它的子类。在远程文件储存的情况下,这意味着读写操作会非常慢,所以警告一下。

path(name)[source]

本地文件系统的路径,文件可以用Python标准的open()在里面打开。对于不能从本地文件系统访问的储存系统,抛出NotImplementedError异常。

save(name, content, max_length=None)[source]

使用储存系统来保存一个新文件,最好带有特定的名称。如果名称为 name的文件已存在,储存系统会按需修改文件名称来获取一个唯一的名称。返回被储存文件的实际名称。

max_length参数会传递给get_available_name()

content参数必须为django.core.files.File或者File子类的实例。

Changed in Django 1.8:新增了max_length参数。

size(name)[source]

返回name所引用的文件的总大小,以字节为单位。对于不能够返回文件大小的储存系统,抛出NotImplementedError异常。

url(name)[source]

返回URL,通过它可以访问到name所引用的文件。对于不支持通过URL访问的储存系统,抛出NotImplementedError异常。

译者:Django 文档协作翻译小组,原文:Storage API。

本文以 CC BY-NC-SA 3.0 协议发布,转载请保留作者署名和文章出处。

Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。

django 1.8 官方文档翻译: 3-3-3 文件储存API相关推荐

  1. django 1.8 官方文档翻译: 3-3-4 管理文件

    管理文件 这篇文档描述了Django为那些用户上传文件准备的文件访问API.底层的API足够通用,你可以使用为其它目的来使用它们.如果你想要处理静态文件(JS,CSS,以及其他),参见管理静态文件(C ...

  2. django 1.8 官方文档翻译: 2-5-7 自定义查找

    自定义查找 New in Django 1.7. Django为过滤提供了大量的内建的查找(例如,exact和icontains).这篇文档阐述了如何编写自定义查找,以及如何修改现存查找的功能.关于查 ...

  3. django 1.8 官方文档翻译:6-3 Django异常

    Django异常 DJango会抛出一些它自己的异常,以及Python的标准异常. Django核心异常 Django核心异常类定义在django.core.exceptions中. ObjectDo ...

  4. django 1.8 官方文档翻译:13-1-3 密码管理

    Django中的密码管理 密码管理在非必要情况下一般不会重新发明,Django致力于提供一套安全.灵活的工具集来管理用户密码.本文档描述Django存储密码和hash存储方法配置的方式,以及使用has ...

  5. django 1.8 官方文档翻译:5-1-2 表单API

    表单 API 关于这篇文档 这篇文档讲述Django 表单API 的详细细节.你应该先阅读表单简介. 绑定的表单和未绑定的表单 表单要么是绑定的,要么是未绑定的. 如果是绑定的,那么它能够验证数据,并 ...

  6. django 1.8 官方文档翻译: 3-3-5 编写自定义存储系统

    编写自定义存储系统 如果你需要提供自定义文件存储 – 一个普遍的例子是在某个远程系统上储存文件 – 你可以通过定义一个自定义的储存类来实现.你需要遵循以下步骤: 1. 你的自定义储存类必须是djang ...

  7. django 1.8 官方文档翻译: 3-3-2 File对象

    File对象 django.core.files模块及其子模块包含了一些用于基本文件处理的内建类. File类 class File(file_object) File 类是Python file 对 ...

  8. django 1.8 官方文档翻译: 1-2-2 编写你的第一个Django应用,第2部分

    编写你的第一个 Django 程序 第2部分 本教程上接 教程 第1部分 . 我们将继续开发 Web-poll 应用,并且专注在 Django 的 自动生成的管理网站上. 哲理 为你的员工或客户生成添 ...

  9. django 1.8 官方文档翻译: 6-6-4 部署静态文件

    部署静态文件 另见 django.contrib.staticfiles 的用法简介,请参见管理静态文件(CSS.images). 在线上环境部署静态文件 放置静态文件到线上环境的基本步骤很简单:当静 ...

最新文章

  1. 计算机英语多层,多层式结构,multi-layer structure,在线英语词典,英文翻译,专业英语...
  2. 直立车各环的调试_平衡小车调试指南(直立环 速度环)
  3. lwip 开发 sntp 与 tcp 不能同时工作的奇怪问题
  4. 知识图谱最新权威综述论文解读:关系抽取
  5. Sentinel 1.8.0 年度版本发布,熔断降级重构升级!
  6. 背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing
  7. DOM之innerHTML属性
  8. 使用 Azure CLI 创建 Windows 虚拟机
  9. 锁定非物质化的梦想,一切选择都会变简单!
  10. Firefox和Chrome浏览器导出书签
  11. 网易云kali linux工具,在kali下如何安装网易云音乐
  12. 微信公众号 永久图文素材 content html sample
  13. AI丨亚马逊将在加州欧文地区测试其自动送货机器人Scout
  14. PDF文本的提取(Linux)
  15. 职中计算机一级证,职中计算机等级一级考证教学网站的设计
  16. 程序养身:初学者如何学瑜伽
  17. 荧光染料标记蛋白质,Cy3/Cy5.5/Cy7-BSA/HAS/Transferrin/Concanavalin A/Casein/Ovalbumin
  18. android:手机各大分区详解
  19. beyond-谁伴我闯荡-国语谐音
  20. 笔记本上触摸板如何打开和关闭?

热门文章

  1. 电脑硬件知识学习_31岁,还在熬夜学习到2点的背后,是一个丈夫和父亲的责任与担当...
  2. 8001.win10安装ros2-dashing环境搭建
  3. python写入mysql乱码_python MYsql中文乱码
  4. 【蓝桥杯嵌入式】【STM32】8_USART之响应上位机指令发送实时时间
  5. 【Pre蓝桥杯嵌入式】如何直接使用LCD例程来作为赛场使用的工程
  6. php 检测nfs状态,PHP和Shell实现检查SAMBA与NFS Server是否存在_php技巧
  7. Cookie 、Session、Token理解以及常见问题总结
  8. oracle ebs 采购订单 为员工分配职务,oracle—EBS-采购功能点操作手册
  9. php服务器去广告,php – 简单的广告服务器
  10. 解决CsrfFilter与Rest服务Post方式的矛盾