DEV Community

Dimitrios Desyllas
Dimitrios Desyllas

Posted on

How to load .env in Django Project

I come from a PHP background, mostly using Laravel/Symfony. Recently, I started using Django, and I wanted to reproduce the way environmental variables are provided via a .env file.

I wanted the .env to load once I start the devserver without having to worry about it. Therefore I followed these steps:

Basic Project Setup For Demonstration

Make a basic app (Skip if Django is already set up)

To start, I created a virtual environment, set up a project.

mkdir myproject
cd myproject
python3 -m venv ./venv
echo vencv >> .gitignore
pip install Django
django-admin startproject mysite .
Enter fullscreen mode Exit fullscreen mode

Install python-dotenv (Skip if already done)

pip install python-dotenv
Enter fullscreen mode Exit fullscreen mode

Load .env file

Loading environmental variables from a .env file is simple with python-dotenv:

from dotenv import load_dotenv
load_dotenv()

Enter fullscreen mode Exit fullscreen mode

The question is though is WHERE to put this code. Loading the .env file every time can be tedious. Based on the setup I previously mentioned, my project created the following structure (some files omitted for simplicity):

myproject/
├── mysite/
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── .env
Enter fullscreen mode Exit fullscreen mode

As you can see, the mysite directory is loaded as a module. All environmental variables are stored in the .env file. To load them, I added the code to the mysite/__init__.py file:

from dotenv import load_dotenv
load_dotenv()
Enter fullscreen mode Exit fullscreen mode

This ensures that all environmental variables are loaded whenever I run:

python manage.py runserver
Enter fullscreen mode Exit fullscreen mode

Drawbacks

The downside to this approach is that if I make any changes to the .env file, I have to stop and restart the server to reload the environment variables.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more