My Preconfigured Django Template: Part 4 – Python-Decouple

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 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
# 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:

My Website

GitHub

🤝 LinkedIn

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

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
Stop to have a rest, do not forget others still in the running.
停下来休息的时候,不要忘记别人还在奔跑
评论 抢沙发

请登录后发表评论

    暂无评论内容