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.

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more