Django存储系统,将上传文件存储在数据库和文件系统中。上游:https://pypi.ac.cn/project/django-binary-database-files/ 。+Python 3.1x。
项目描述
Django二进制数据库文件 +Python 3.1x
上游: https://pypi.ac.cn/project/django-binary-database-files/ +Python 3.1x
Django二进制数据库文件
这是一个Django存储系统,它将上传文件存储在数据库的二进制字段中。文件可以从数据库(通常不是一个好主意)、文件系统或CDN中提供。
警告:从Django中提供静态文件通常不是一个好主意,但有某些有效的用例。如果您的Django应用程序位于缓存反向代理后面,并且您需要扩展应用程序服务器,则将文件存储在数据库中可能更简单。
基于 Kimetrica 的 django-database-files,rhunwicks,chrisspen,bfirsh,但已更新以与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'
)定义渲染文件可访问 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")), ]
-
数据库文件基本 URL
允许存储后端的
url
方法在提供时返回一个绝对 URL。
开发
应该使用以下工具进行代码审查:
./pep8.sh
测试需要安装 Python 开发头文件,你可以在 Ubuntu 上使用以下命令安装:
sudo apt-get install python3-dev python3.6-dev
要跨多个 Python 版本运行单元测试,请安装:
sudo apt-get install python3.6-minimal python3.6-dev python3.7-minimal python3.7-dev
要运行所有 测试
export TESTNAME=; tox
要运行特定环境的测试(例如 Python 3.6 与 Django 2.2)
export TESTNAME=; tox -e py36-django22
要运行特定的测试
export TESTNAME=.test_adding_file; tox -e py36-django22
要构建和部署带有版本号的包到 PyPI,请确保 所有单元测试都通过,然后增加(并提交)binary_database_files/__init__.py
中的版本号,然后运行
python setup.py sdist bdist_wheel
twine check dist/*
twine upload dist/*
项目详情
散列 信息 for django-binary-database-files-dimaqq-py31x-1.0.17.post1.tar.gz
算法 | 散列摘要 | |
---|---|---|
SHA256 | baaacddf0b04a023a07d4486fec6420a599a2d3c3fed068b36161f796d969796 |
|
MD5 | 22da265471df1c3aab60da14d6204432 |
|
BLAKE2b-256 | c6130b5a20f689fcca60904395b2d5993393f3b1913911e2eae1a355d0215605 |
散列 信息 for django_binary_database_files_dimaqq_py31x-1.0.17.post1-py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 72c7b69c542f51faa7a4fe9e8897f80b30d05afa890eb09563fe8e617f02a0e7 |
|
MD5 | faffb952c1f59970854bfadda2e1f11d |
|
BLAKE2b-256 | f63f9f867390d6e335135f729c18aff5cad466ed089bd93d72131c887bcd4cd7 |