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:
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 .
pip install python-dotenv
Loading environmental variables from a .env file is simple with python-dotenv:
from dotenv import load_dotenv load_dotenv()
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
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()
This ensures that all environmental variables are loaded whenever I run:
python manage.py runserver
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.
The above is the detailed content of How to load .env in Django Project. For more information, please follow other related articles on the PHP Chinese website!