Giter Club home page Giter Club logo

django-file_manager's Introduction

Example of uploading/downloading file to azure storage using Django backend

Why would you want to store in a Blob storage or Object Storage instead of in your back-end server?

Django offer a facility to conveniently store files in the server in a folder however, I always prefer to store this in an object store or the cloud blob storage (Binary Large Object Storage) for a few reasons

  • Cheaper
  • Portability
  • Scalability

Then I keep only in the application the metadata of the files and also never "hard" delete them but do a simple "soft" delete

Setup

To set up the project you will need to

  1. Clone this repository

move to a folder in your computer and then clone it by

git clone https://github.com/pedrojunqueira/django-file_manager.git

then move into the code directory

cd django-file_manager

  1. Create and activate a Python virtual environment

Create by the following command

python3 -m venv .venv

Activate by the following command (for mac and unix)

source .venv/bin/activate

3.Install dependencies

pip install -r requirements.txt

  1. Set up environment variables for your azure subscription

if you use bash shell then you can just paste the following in your .bash_profile file

It is located in your user root directory ~/.bash_profile

export AZURE_TENANT_ID=<tenant_id>
export AZURE_CLIENT_ID=<client-id>
export AZURE_CLIENT_SECRET=<client-secret>
export AZURE_SUBSCRIPTION_ID=<subscription-id>

on the above put your credentials on the placeholders in between angle brackets.

If you use zsh then you need to past on your ~/.zshenv

but there just do not use the word export

AZURE_TENANT_ID=<tenant_id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
AZURE_SUBSCRIPTION_ID=<subscription-id>

to understand this better you can access this excellent resource in YouTube SigmaCode channel

  1. Set up environment variable to your django application

create a .env file with the following key value pairs and include your configuration

AZURE_STORAGE_ACCOUNT=https://<your storage account>.blob.core.windows.net
AZURE_VAULT_ACCOUNT=https://<your key vault>.vault.azure.net/
AZURE_STORAGE_KEY_NAME=<storage-key>
AZURE_APP_BLOB_NAME=files

make sure this file is save on the following directory from the root directory

./django-file-upload/website/website/.env

  1. Migrate database and models

python3 manage.py makemigrations

python3 manage.py migrate

You should see output like that

Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK

migrate files app model

python3 manage.py makemigrations files

python3 manage.py migrate files

output

Operations to perform:
  Apply all migrations: files
Running migrations:
  Applying files.0001_initial... OK

Start you app

Once you you complete all the set up above you are good to go.

You just need to start you Django development server

navigate to the folder website

cd website

then start the server by

python3 manage.py runserver

open you browser on http://127.0.0.1:8000/

congrats !!!

Resources

Django documentation

Azure Storage Python SDK

django-file_manager's People

Contributors

pedrojunqueira avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.