跳转到主要内容

一个给文件赋予随机名称的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()中抛出带有EEXISTSOSError

如果底层存储类在其构造函数中接受uniquify_names=False,则RandomFilenameMetaStorage将减少与底层存储类的往返次数,并使随机文件名生成更高效。

安全的存储类包括

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分布

django-randomfilenamestorage-1.1.tar.gz (6.3 kB 查看哈希值)

上传时间

由支持