一个给文件赋予随机名称的Django存储后端。
项目描述
一个给文件赋予随机名称的Django存储后端。
默认情况下,django.core.files.storage.FileSystemStorage通过在文件名后添加下划线来解决冲突的文件名。例如,当您尝试创建已存在的hello.txt时,它将重命名为hello_.txt。
django-randomfilenamestorage创建随机文件名,因此如果您尝试创建hello.txt,它将保存为7z0a8m25sh9fyitx.txt。目录名称和扩展名被保留,只有根文件名是随机的。
安装
安装django-randomfilenamestorage的最简单方法是使用pip
pip install django-randomfilenamestorage
快速入门
在您的Django settings文件中
将DEFAULT_FILE_STORAGE设置为'django_randomfilenamestorage.storage.RandomFilenameFileSystemStorage'
可选地,将'django-dbstorage'添加到INSTALLED_APPS
这为您提供了随机的文件名,基于Django的FileSystemStorage存储类。
RandomFilenameMetaStorage
您可以通过使用RandomFilenameMetaStorage来包装它来定义一个新的底层存储类。
from django.core.files.storage import get_storage_class from django_randomfilenamestorage.storage import RandomFilenameMetaStorage RandomFilenameMyStorage = RandomFilenameMetaStorage( storage_class=get_storage_class('myapp.storage.MyStorage'), )
RandomFilenameMetaStorage默认使用16字符根文件名。要更改默认值,请将settings.RANDOM_FILENAME_LENGTH定义为不同的整数值。
要更改包装存储类的文件名长度,请将一个length参数传递给RandomFilenameMetaStorage。要为特定的存储实例覆盖它,请在其构造函数中传递一个randomfilename_length参数。
高效的随机文件名生成
在创建时,RandomFilenameMetaStorage会小心地不覆盖现有文件。遗憾的是,许多存储类在检测到重复文件时不会在_save()中抛出带有EEXISTS的OSError。
如果底层存储类在其构造函数中接受uniquify_names=False,则RandomFilenameMetaStorage将减少与底层存储类的往返次数,并使随机文件名生成更高效。
安全的存储类包括
django_randomfilenamestorage.storage.SafeFileSystemStorage
项目详情
django-randomfilenamestorage-1.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 51ea56ff6970364573b8739a163a0e3f229e2240ddb8899a2ce0d82e94490ef5 |
|
MD5 | 28b95e20eeb8b9f13e849b99322c739e |
|
BLAKE2b-256 | 44a76b74bc36e37a78e0798ff945e9b4af0520a5a097bae2222d377c32379d1a |