Django的存储系统,可以在数据库和文件系统中存储上传的文件。
项目描述
Django 二进制数据库文件
这是一个Django存储系统,它将上传的文件存储在数据库的二进制字段中。文件可以从数据库(通常不是一个好主意)、文件系统或CDN中提供服务。
警告:从Django中提供静态文件通常不是一个好主意,但有一些有效用例。如果您的Django应用程序后面有一个缓存反向代理,并且您需要扩展应用程序服务器,那么将文件存储在数据库中可能更简单。
基于Kimetrica、rhunwicks、chrisspen、bfirsh的django-database-files,但已更新以与Django 2.2-4.0、Python 3.6+兼容,并使用二进制字段进行存储。
需求
- Django 2.2 - 4.0
安装
简单通过pip安装:
pip install django-binary-database-files
用法
在 settings.py
文件中,将 binary_database_files
添加到您的 INSTALLED_APPS
中,并添加以下行
DEFAULT_FILE_STORAGE = 'binary_database_files.storage.DatabaseStorage'
注意,仍然使用 upload_to
参数来同步数据库中存储的文件与文件系统上的文件,因此新字段和现有字段仍然应该具有从您的媒体基本目录中可以获得意义的值。
如果您正在将包添加到已存在预存文件的现有Django安装中,请运行
python manage.py database_files_load
此外,如果您想将数据库中的所有文件导出到文件系统,请运行
python manage.py database_files_dump
注意,当清除引用文件的字段时,数据库和文件系统上的对应文件不会被自动删除。要删除数据库和文件系统中所有未由任何模型字段引用的文件,请运行
python manage.py database_files_cleanup
设置
-
DB_FILES_AUTO_EXPORT_DB_TO_FS
=True
|False
(默认True
)如果为真,当文件上传或从数据库读取时,会将其副本导出到与FileField的upload_to路径对应的媒体目录,就像使用默认的Django文件存储一样。
如果为假,文件只存在于数据库中。
-
DATABASE_FILES_URL_METHOD
='URL_METHOD_1'
|'URL_METHOD_2'
(默认'URL_METHOD_1'
)定义在渲染文件的Web访问URL时使用的方法。
如果为
URL_METHOD_1
,则假设所有文件都已导出到文件系统,并使用与您的settings.MEDIA_URL
对应的路径。如果为
URL_METHOD_2
,则使用绑定到database_file
观看的URL来动态查找和从文件系统或数据库提供文件。在这种情况下,您还需要更新您的
urls.py
以包括提供文件的视图urlpatterns = [ # ... the rest of your URLconf goes here ... # Serve Database Files directly path(r"", include("binary_database_files.urls")), ]
-
DATABASE_FILES_BASE_URL
允许存储后端的
url
方法在提供时返回绝对URL。
开发
应使用
./lint.sh
测试需要安装Python开发头文件,您可以在Ubuntu上使用以下命令安装
sudo apt-get install python3.12-minimal python3.12-dev
要跨多个Python版本运行unittests,请安装
sudo apt-get install python3.10-minimal python3.10-dev python3.11-minimal python3.11-dev python3.12-minimal python3.12-dev
要运行所有 测试
export TESTNAME=; tox
要为特定环境运行测试(例如Python 3.12与Django 5.0)
export TESTNAME=; tox -e py312-django50
要运行特定的测试
export TESTNAME=.test_adding_file; tox -e py312-django50
要构建和部署一个版本化的包到PyPI,请验证 所有unittests都通过,然后增加(并提交)binary_database_files/__init__.py
中的版本号,然后运行
python setup.py sdist bdist_wheel
twine check dist/*
twine upload dist/*
项目详情
django-binary-database-files-1.0.18.tar.gz的散列
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7109b56439617e30cecdf1e91a5d7cdc5ac51721b06d82a0fc06c8e101de75c2 |
|
MD5 | b6cf9a9ae74fc8e3bf3fc3a72a63039b |
|
BLAKE2b-256 | 99bc6632620baf4771de74a5b7ce4e87b24a365107dc0e7585f207fb4e84e8c2 |