Skip to content

jameelhamdan/django-gridfs-storage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-gridfs-storage

Simple django GridFS storage engine

Usage:

  1. Install django_gridfs_storage:
    pip install django_gridfs_storage
    
  2. Into settings.py file of your project, add gridfs_storage to INSTALLED_APPS:
    INSTALLED_APPS = [
        ...,
        'gridfs_storage',
    ]
  3. add the following variables to your settings:
    # defaults to default local mongodb server
    DEFAULT_GRIDFS_URL = 'mongodb://127.0.0.1:27017' 
    # if set to None, it will refuse to serve files and raise an Exception
    DEFAULT_GRIDFS_SERVE_URL = None  
    DEFAULT_GRIDFS_COLLECTION = 'storage'
  4. To serve files through django (not recommended) you can use this in urls.py:
    urlpatterns = [
        path('admin/', admin.site.urls),
        ...,
        path('media/', include('gridfs_storage.urls')),
    ]

    and set the DEFAULT_GRIDFS_SERVE_URL to the prefix you specified in the path. in this case its /media/

  5. If you wish to use it on all FileField and ImageField set it as the default Storage:
    DEFAULT_FILE_STORAGE = 'gridfs_storage.storage.GridFSStorage'
  6. If you wish to use on individual field bases set it as the field storage:
    from django.db import models
    from gridfs_storage.storage import GridFSStorage
    
    class SampleModel(models.Model):
        attachment = models.FileField(storage=GridFSStorage())
        first_pic = models.ImageField(storage=GridFSStorage(location='sample/images'))
        
        # To store in a different collection than "storage"
        another_pic = models.ImageField(storage=GridFSStorage(collection='image_storage'))
        
        # Serve through custom cdn connected to the same gridfs or similar, the limit is the sky :)
        served_outside = models.ImageField(storage=GridFSStorage(base_url='https://img.cdn/serve/'))

Requirements:

  1. Python 3.6 or higher.
  2. Django 2.2 or higher.
  3. MongoDB 3.4 or higher.

Tests? None.

We crash production like real men

About

Pluggable Django GridFS storage.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages