【问题标题】:How to hide google map api key in django before pushing it on github?在将它推送到 github 之前,如何在 django 中隐藏 google map api 密钥?
【发布时间】:2019-02-01 11:58:09
【问题描述】:

这是我的 google 地址 api 脚本,其中包含 api 密钥

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=api_key&libraries=places&callback=ActivatePlacesSearch">

我在项目目录中使用了 .env 文件来隐藏 settings.py 文件中的敏感信息。如何使用 .env 文件从模板中隐藏我的 api 密钥?

【问题讨论】:

  • 您可以将其设为一个设置,然后将其传递给上下文字典中的模板。
  • 请注意,此密钥将在您部署项目后通过任何浏览器开发工具提供。

标签: python django python-3.x


【解决方案1】:

.env 文件中定义一个变量,例如:

GOOGLE_MAPS_API_KEY="your_key"

然后在myproject/settings.py:

GOOGLE_MAPS_API_KEY = os.environ.get('GOOGLE_MAPS_API_KEY')

然后在您的views.py 文件中:

from django.conf import settings

def my_view(request):
    context = {
        'api_key': settings.GOOGLE_MAPS_API_KEY
    }
    return render('template.html', context)

那么你就可以在模板中访问api_key了。

注意(感谢 cmets 中的 trixn):确保 .env 文件包含在您的 .gitignore 文件中,这样它就不会被检入源代码控制并泄露您的令牌.如果您使用 Python 的标准 .gitignore,它应该已经包含在内。

【讨论】:

  • 我在视图中直接导入 .env 文件。那么有什么缺点吗?
  • 这很好,但最好只从设置访问.env 并从所有其他文件访问设置。这样,如果您更改了环境变量的来源,您只需在 settings.py 中进行更改,而不是在所有地方进行。
  • 但是不要忘记通过将.env 文件添加到.gitignore 文件来忽略它。否则它仍然会被签入并泄露你的令牌。
猜你喜欢
  • 2017-11-04
  • 2014-02-12
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 2020-07-08
  • 2016-06-13
  • 2021-04-07
  • 2015-08-28
相关资源
最近更新 更多