django 1.8 官方文档翻译: 3-3-3 文件储存API
文件储存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_path
, get_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相关推荐
- django 1.8 官方文档翻译: 3-3-4 管理文件
管理文件 这篇文档描述了Django为那些用户上传文件准备的文件访问API.底层的API足够通用,你可以使用为其它目的来使用它们.如果你想要处理静态文件(JS,CSS,以及其他),参见管理静态文件(C ...
- django 1.8 官方文档翻译: 2-5-7 自定义查找
自定义查找 New in Django 1.7. Django为过滤提供了大量的内建的查找(例如,exact和icontains).这篇文档阐述了如何编写自定义查找,以及如何修改现存查找的功能.关于查 ...
- django 1.8 官方文档翻译:6-3 Django异常
Django异常 DJango会抛出一些它自己的异常,以及Python的标准异常. Django核心异常 Django核心异常类定义在django.core.exceptions中. ObjectDo ...
- django 1.8 官方文档翻译:13-1-3 密码管理
Django中的密码管理 密码管理在非必要情况下一般不会重新发明,Django致力于提供一套安全.灵活的工具集来管理用户密码.本文档描述Django存储密码和hash存储方法配置的方式,以及使用has ...
- django 1.8 官方文档翻译:5-1-2 表单API
表单 API 关于这篇文档 这篇文档讲述Django 表单API 的详细细节.你应该先阅读表单简介. 绑定的表单和未绑定的表单 表单要么是绑定的,要么是未绑定的. 如果是绑定的,那么它能够验证数据,并 ...
- django 1.8 官方文档翻译: 3-3-5 编写自定义存储系统
编写自定义存储系统 如果你需要提供自定义文件存储 – 一个普遍的例子是在某个远程系统上储存文件 – 你可以通过定义一个自定义的储存类来实现.你需要遵循以下步骤: 1. 你的自定义储存类必须是djang ...
- django 1.8 官方文档翻译: 3-3-2 File对象
File对象 django.core.files模块及其子模块包含了一些用于基本文件处理的内建类. File类 class File(file_object) File 类是Python file 对 ...
- django 1.8 官方文档翻译: 1-2-2 编写你的第一个Django应用,第2部分
编写你的第一个 Django 程序 第2部分 本教程上接 教程 第1部分 . 我们将继续开发 Web-poll 应用,并且专注在 Django 的 自动生成的管理网站上. 哲理 为你的员工或客户生成添 ...
- django 1.8 官方文档翻译: 6-6-4 部署静态文件
部署静态文件 另见 django.contrib.staticfiles 的用法简介,请参见管理静态文件(CSS.images). 在线上环境部署静态文件 放置静态文件到线上环境的基本步骤很简单:当静 ...
最新文章
- 计算机英语多层,多层式结构,multi-layer structure,在线英语词典,英文翻译,专业英语...
- 直立车各环的调试_平衡小车调试指南(直立环 速度环)
- lwip 开发 sntp 与 tcp 不能同时工作的奇怪问题
- 知识图谱最新权威综述论文解读:关系抽取
- Sentinel 1.8.0 年度版本发布,熔断降级重构升级!
- 背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing
- DOM之innerHTML属性
- 使用 Azure CLI 创建 Windows 虚拟机
- 锁定非物质化的梦想,一切选择都会变简单!
- Firefox和Chrome浏览器导出书签
- 网易云kali linux工具,在kali下如何安装网易云音乐
- 微信公众号 永久图文素材 content html sample
- AI丨亚马逊将在加州欧文地区测试其自动送货机器人Scout
- PDF文本的提取(Linux)
- 职中计算机一级证,职中计算机等级一级考证教学网站的设计
- 程序养身:初学者如何学瑜伽
- 荧光染料标记蛋白质,Cy3/Cy5.5/Cy7-BSA/HAS/Transferrin/Concanavalin A/Casein/Ovalbumin
- android:手机各大分区详解
- beyond-谁伴我闯荡-国语谐音
- 笔记本上触摸板如何打开和关闭?
热门文章
- 电脑硬件知识学习_31岁,还在熬夜学习到2点的背后,是一个丈夫和父亲的责任与担当...
- 8001.win10安装ros2-dashing环境搭建
- python写入mysql乱码_python MYsql中文乱码
- 【蓝桥杯嵌入式】【STM32】8_USART之响应上位机指令发送实时时间
- 【Pre蓝桥杯嵌入式】如何直接使用LCD例程来作为赛场使用的工程
- php 检测nfs状态,PHP和Shell实现检查SAMBA与NFS Server是否存在_php技巧
- Cookie 、Session、Token理解以及常见问题总结
- oracle ebs 采购订单 为员工分配职务,oracle—EBS-采购功能点操作手册
- php服务器去广告,php – 简单的广告服务器
- 解决CsrfFilter与Rest服务Post方式的矛盾