【问题标题】:How do I use .env in Django?如何在 Django 中使用 .env?
【发布时间】:2020-07-16 00:14:41
【问题描述】:

我的目标是使用 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 virtualenv virtual-environment


    【解决方案1】:

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

    from dotenv import load_dotenv
    import os
    
    load_dotenv()
    EMAIL_HOST = os.getenv("EMAIL_HOST")
    

    【讨论】:

    • 非常感谢!这是我的解决方法!
    【解决方案2】:

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

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

    文件环境

    DJANGO_SECRET_KEY=%jjnu7=54g6s%qjfnhbpw0zeoei=$!her*y(p%!&84rs$4l85io
    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")
    

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

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 2022-07-06
      • 1970-01-01
      • 2020-11-24
      • 2017-12-28
      • 2021-07-03
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多