My Preconfigured Django Template (4 Part Series)
1 My Preconfigured Django Template: Part 1 – Introduction
2 My Preconfigured Django Template: Part 2 – UV Astral
3 My Preconfigured Django Template: Part 3 – Django Extensions
4 My Preconfigured Django Template: Part 4 – Python-Decouple
What is Python-Decouple?
Python-Decouple is a simple yet powerful tool that helps manage Django configuration settings securely. Instead of hardcoding secrets like SECRET_KEY or database credentials in settings.py, it allows you to store them in environment variables or a .env file, keeping your codebase clean and safe.
Why Use Python-Decouple?
- Better security – Keeps sensitive data out of your code.
- Easy environment switching – Quickly adapt configurations for development, staging, and production.
- Less clutter in settings.py – Keeps settings organized and modular.
- Automatic type conversion – Easily manage strings, integers, and lists.
- Seamless integration – Works with Django, CI/CD pipelines, and containerized deployments.
Quick Commands
<span># Install Python-Decouple</span>uv add python-decouple<span># Install Python-Decouple</span> uv add python-decouple# Install Python-Decouple uv add python-decouple
Enter fullscreen mode Exit fullscreen mode
# Create a .env file and store secretsSECRET_KEY=mysecretkeyDEBUG=TrueDATABASE_NAME=mydatabaseDATABASE_USER=myuserDATABASE_PASSWORD=mypassword# Create a .env file and store secrets SECRET_KEY=mysecretkey DEBUG=True DATABASE_NAME=mydatabase DATABASE_USER=myuser DATABASE_PASSWORD=mypassword# Create a .env file and store secrets SECRET_KEY=mysecretkey DEBUG=True DATABASE_NAME=mydatabase DATABASE_USER=myuser DATABASE_PASSWORD=mypassword
Enter fullscreen mode Exit fullscreen mode
<span># Use Python-Decouple in settings.py </span><span>from</span> <span>decouple</span> <span>import</span> <span>config</span><span>SECRET_KEY</span> <span>=</span> <span>config</span><span>(</span><span>"</span><span>SECRET_KEY</span><span>"</span><span>)</span><span>DEBUG</span> <span>=</span> <span>config</span><span>(</span><span>"</span><span>DEBUG</span><span>"</span><span>,</span> <span>default</span><span>=</span><span>False</span><span>,</span> <span>cast</span><span>=</span><span>bool</span><span>)</span><span>DATABASES</span> <span>=</span> <span>{</span><span>"</span><span>default</span><span>"</span><span>:</span> <span>{</span><span>"</span><span>ENGINE</span><span>"</span><span>:</span> <span>"</span><span>django.db.backends.postgresql</span><span>"</span><span>,</span><span>"</span><span>NAME</span><span>"</span><span>:</span> <span>config</span><span>(</span><span>"</span><span>DATABASE_NAME</span><span>"</span><span>),</span><span>"</span><span>USER</span><span>"</span><span>:</span> <span>config</span><span>(</span><span>"</span><span>DATABASE_USER</span><span>"</span><span>),</span><span>"</span><span>PASSWORD</span><span>"</span><span>:</span> <span>config</span><span>(</span><span>"</span><span>DATABASE_PASSWORD</span><span>"</span><span>),</span><span>"</span><span>HOST</span><span>"</span><span>:</span> <span>"</span><span>localhost</span><span>"</span><span>,</span><span>"</span><span>PORT</span><span>"</span><span>:</span> <span>5432</span><span>,</span><span>}</span><span>}</span><span># Use Python-Decouple in settings.py </span> <span>from</span> <span>decouple</span> <span>import</span> <span>config</span> <span>SECRET_KEY</span> <span>=</span> <span>config</span><span>(</span><span>"</span><span>SECRET_KEY</span><span>"</span><span>)</span> <span>DEBUG</span> <span>=</span> <span>config</span><span>(</span><span>"</span><span>DEBUG</span><span>"</span><span>,</span> <span>default</span><span>=</span><span>False</span><span>,</span> <span>cast</span><span>=</span><span>bool</span><span>)</span> <span>DATABASES</span> <span>=</span> <span>{</span> <span>"</span><span>default</span><span>"</span><span>:</span> <span>{</span> <span>"</span><span>ENGINE</span><span>"</span><span>:</span> <span>"</span><span>django.db.backends.postgresql</span><span>"</span><span>,</span> <span>"</span><span>NAME</span><span>"</span><span>:</span> <span>config</span><span>(</span><span>"</span><span>DATABASE_NAME</span><span>"</span><span>),</span> <span>"</span><span>USER</span><span>"</span><span>:</span> <span>config</span><span>(</span><span>"</span><span>DATABASE_USER</span><span>"</span><span>),</span> <span>"</span><span>PASSWORD</span><span>"</span><span>:</span> <span>config</span><span>(</span><span>"</span><span>DATABASE_PASSWORD</span><span>"</span><span>),</span> <span>"</span><span>HOST</span><span>"</span><span>:</span> <span>"</span><span>localhost</span><span>"</span><span>,</span> <span>"</span><span>PORT</span><span>"</span><span>:</span> <span>5432</span><span>,</span> <span>}</span> <span>}</span># Use Python-Decouple in settings.py from decouple import config SECRET_KEY = config("SECRET_KEY") DEBUG = config("DEBUG", default=False, cast=bool) DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql", "NAME": config("DATABASE_NAME"), "USER": config("DATABASE_USER"), "PASSWORD": config("DATABASE_PASSWORD"), "HOST": "localhost", "PORT": 5432, } }
Enter fullscreen mode Exit fullscreen mode
Read the full article on Medium
Follow me on:
️ Medium
My Preconfigured Django Template (4 Part Series)
1 My Preconfigured Django Template: Part 1 – Introduction
2 My Preconfigured Django Template: Part 2 – UV Astral
3 My Preconfigured Django Template: Part 3 – Django Extensions
4 My Preconfigured Django Template: Part 4 – Python-Decouple
原文链接:My Preconfigured Django Template: Part 4 – Python-Decouple
暂无评论内容