【问题标题】:Dotenv Doesn't Handle Multiple Hosts in ALLOWED_HOSTSDotenv 不处理 ALLOWED_HOSTS 中的多个主机
【发布时间】:2020-10-16 07:33:22
【问题描述】:

在我的生产 setting.py 文件中,我有:

from dotenv import load_dotenv
load_dotenv(override=True)

DEBUG = os.getenv('DEBUG')

#ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS")
ALLOWED_HOSTS = ['example.com', 'www.example.com']

在我的 .env 文件中,我有

DEBUG=False
ALLOWED_HOSTS=['www.example.com', 'example.com']

如果我在设置中切换注释掉的行,我会收到一条错误消息,指出 url 可能不在允许的主机中。我在 .env 文件中有许多其他定义可以正常工作,尽管我不确定调试。我在 ALLOWED_HOSTS 上尝试了各种组合并得到相同的错误。在开发中我有:

ALLOWED_HOSTS='localhost'

该设置工作正常。知道我做错了什么吗?

【问题讨论】:

  • 将 * 放入允许的主机列表中,例如 ALLOWED_HOSTS=[*]
  • 这只会将网站打开到每个 URL,这不是他想要做的事情

标签: django dotenv


【解决方案1】:

我找到了答案here 的一部分。然后我就这样做了:

#setting.py
ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS").split(' ') 

#.env
ALLOWED_HOSTS = domain1 domain2 domain3 domain4

它有效。

【讨论】:

    【解决方案2】:

    您似乎没有正确加载 .env 文件。试试:

    project_folder = os.path.expanduser('~/my-project-dir')  # adjust as appropriate    
    load_dotenv(os.path.join(project_folder, '.env'))
    ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS")
    

    文档:https://help.pythonanywhere.com/pages/environment-variables-for-web-apps/

    【讨论】:

    • 如果我没有正确加载它,那么不会出现任何变量都不会被填充的情况。我有我的数据库 ID 和密码以及密钥。他们似乎都在工作。这并不是说我在加载它的过程中不走运。
    • 好的,我不知道你从中得到了什么,因为你没有在你的问题中提到这一点——你只是提到了一个变量,而不是其他变量。您应该更新您的问题以添加该信息。
    • 在原始问题中:“我在 .env 文件中有许多其他定义都可以正常工作”。我应该更清楚。
    • 是的,这会有所帮助。
    猜你喜欢
    • 2012-11-27
    • 2021-10-28
    • 2016-09-01
    • 1970-01-01
    • 2012-03-23
    • 2018-02-16
    • 1970-01-01
    • 2014-10-24
    • 2011-06-21
    相关资源
    最近更新 更多