我如何在 Django 中使用 .env?

How do I use .env in Django?

我的目标是使用 Python Django 发送电子邮件,而不在实际代码中显示我的电子邮件密码。经过一些研究,我想我可以将密码存储在 .env 文件中,然后从 .env 文件中访问密码。所以,我目前在我的 Django 项目中有一个 .env 文件,其中包含这行代码:

export EMAIL_HOST = 'smtp.gmail.com'

在我的 settings.py 中,我有这些:

import environ
env = environ.Env()
environ.Env.read_env()
EMAIL_HOST = os.environ.get('EMAIL_HOST')
print(EMAIL_HOST)

但是打印出来的结果是None。 print(os.environ) 虽然吐出一些东西。如何让我的 .env 文件工作?

不仅在Django中,一般都使用库python-dotenv

from dotenv import load_dotenv
import os

load_dotenv()
EMAIL_HOST = os.getenv("EMAIL_HOST")

https://gist.github.com/josuedjh3/38c521c9091b5c268f2a4d5f3166c497 在您的项目中创建了一个文件 utils.py。

1: 创建一个 .env 文件来保存你的环境变量。

文件环境

DJANGO_SECRET_KEY=%jjnu7=54g6s%qjfnhbpw0zeoei=$!her*y(p%!&84rsl85io
DJANGO_DATABASE_HOST=database
DJANGO_DATABASE_NAME=master
DJANGO_DATABASE_USER=postgres

2:出于安全考虑,使用权限600 sudo chmod 600 .env

3:您现在可以使用变量 settigns.py

from .utils import load_env 

get_env = os.environ.get

BASE_DIR = Path(__file__).parent.parent.parent 

load_env(BASE_DIR / "../.env") #here you indicate where your .env file is

SECRET_KEY = get_env("DJANGO_SECRET_KEY", "secret")

这样它可以处理多个环境生产或 stagins