Django Midnight File System (MFS) is a Django application programmed to manage easily the server files created and uploaded with the permissions and download authorizations.
sudo apt install python3;\
sudo apt install python3-pip
You have to make sure of the version of python that is installed. The version of python
used is python 3.8.10
.
You can install a python virtualenv program in two different ways.
sudo apt install python3-venv
OR
sudo pip3 install virtualenv
In your project root, if you have not already done so, run one of the following commands to create a virtual environment.
python3 -m venv env
OR
virtualenv env -p python3
source env/bin/activate
You must install the following dependences :
pip install django==3.2.6;\
pip install django-filter==21.1;\
pip install djangorestframework==3.13.1;\
pip install Markdown==3.3.6
- Copy
mfs
folder and past it into your root project. - Write the following code source in
settings.py
of your Django project.
# MFS settings :
FSDIR = os.path.join(BASE_DIR, "fsdir"); # Definition of root directory of server files.
FSURL = "/file/"; # Definition of global URL for file management.
- In
urls.py
file, write the following code:
# ...
from django.conf import settings
from django.conf.urls.static import static
# ...
# After urlpatterns definition ...
urlpatterns += static(settings.FSURL, document_root=settings.FSDIR);
- Execute the following django commands to make migration of the database File model :
./manage.py makemigrations;\
./manage.py migrate
All is done !
We will see some examples of use cases in a Django project. Given an application named galery
.
- Example 1:
You can create model of image file in
galery
like following code :
from django.utils.translation import gettext_lazy as _
from django.db import models
from mfs.models import File
class Image(File):
"""
Image file database model definition
"""
DEFAULT_DIR_NAME = "Pictures"; # define the root folder name of our images
DEFAULT_FILE_EXT = "png"; # define the global extension
class Meta:
verbose_name = _("Image");
def __str__(self):
"""
Function to return a representation of this model into string.
"""
return self.name; # this attribut is already defined on File superclass
Now we will try to create an image uploading function in the views.py
file :
from django.shortcuts import render
from mfs.core import get_file_uploaded
from .models import Image
def image_uploader(request):
"""
Function of image file uploading
"""
mfs_img = get_file_uploaded(request.FILES.get('file'), Image);
mfs_img.save();
print(mfs_img);
return f"{mfs_img.name} at {mfs_img.filepath} is uploaded successfully!";