Skip to main content

A storage system for Django that stores uploaded files in both the database and file system.

Project description

This is a storage system for Django that stores uploaded files in the database. Files can be served from the database (usually a bad idea), the file system, or a CDN.

Installation

Simply install via pip with:

pip install django-database-files-3000

Usage

In settings.py, add database_files to your INSTALLED_APPS and add this line:

DEFAULT_FILE_STORAGE = 'database_files.storage.DatabaseStorage'

Note, the upload_to parameter is still used to synchronize the files stored in the database with those on the file system, so new and existing fields should still have a value that makes sense from your base media directory.

If you’re using South, the initial model migrations will scan through all existing models for FileFields or ImageFields and will automatically load them into the database.

If for any reason you want to re-run this bulk import task, run:

python manage.py database_files_load

Additionally, if you want to export all files in the database back to the file system, run:

python manage.py database_files_dump

Note, that when a field referencing a file is cleared, the corresponding file in the database and on the file system will not be automatically deleted. To delete all files in the database and file system not referenced by any model fields, run:

python manage.py database_files_cleanup

Settings

  • DB_FILES_AUTO_EXPORT_DB_TO_FS = True|``False`` (default True)

    If true, when a file is uploaded or read from the database, a copy will be exported to your media directory corresponding to the FileField’s upload_to path, just as it would with the default Django file storage.

    If false, the file will only exist in the database.

  • DATABASE_FILES_URL_METHOD = URL_METHOD_1|``URL_METHOD_1`` (default URL_METHOD_1)

    Defines the method to use when rendering the web-accessible URL for a file.

    If URL_METHOD_1, assumes all files have been exported to the filesystem and uses the path corresponding to your settings.MEDIA_URL.

    If URL_METHOD_2, uses the URL bound to the database_file view to dynamically lookup and serve files from the filesystem or database.

Development

You can run unittests with:

python setup.py test

You can run unittests for a specific Python version using the pv parameter like:

python setup.py test --pv=3.2

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-database-files-3000-0.3.0.tar.gz (10.3 kB view details)

Uploaded Source

File details

Details for the file django-database-files-3000-0.3.0.tar.gz.

File metadata

File hashes

Hashes for django-database-files-3000-0.3.0.tar.gz
Algorithm Hash digest
SHA256 6a381f8bf11b4593e66220a51f42d405518a7e8392efb1befcdd8bce50c0f7a3
MD5 51025c6a36eebe1f406564f8028afb6a
BLAKE2b-256 e4e51b71fd3947defca134d5b57ed16da3b097f7de5f5a26610c6df735946585

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page