从事heroku django项目。
目标:我希望在本地运行服务器,在云上也使用相同的代码(这很有道理)。
Problem:环境从linux服务器(heroku)到本地PC窗口系统不同。本地环境变量不同于云Heroku配置vars。可以使用CLI heroku config:set TIMES=2
轻松地设置Heroku配置vars。
在设置本地env时,完全是一团糟。
我在cmd中尝试了以下操作:py -c "import os;os.environ['Times']=2"
#来设置env
然后运行py -c "import os;os.environ.get('Times','Not Found')"
标准输出:“找不到”。
经过一些研究之后,这类env似乎是在每个进程/会话使用中临时存储的。
解决方案理论:将os.environ
重定向到根heroku项目的.env
文件,而不是PC env。因此,我发现这个工具戴伦夫非常适合类似Unix的OSs,但在Windows上却不可用。
views.py
代码(在云上运行完美,在本地机器上运行):
import os
import requests
from django.shortcuts import render
from django.http import HttpResponse
from .models import Greeting
def index(request):
# get method takes 2 parameters (env_var_string,return value if var is not found)
times = int(os.environ.get('TIMES',3))
return HttpResponse('<p>'+ 'Hello! ' * times+ '</p>')
def db(request):
greeting = Greeting()
greeting.save()
greetings = Greeting.objects.all()
return render(request, "db.html", {"greetings": greetings})
主要问题:是否有适当的方法在窗口中本地隐藏秘密并通过os.environ['KEY']
访问它们
另一个解决方案理论:我想知道python虚拟环境是否有它自己的环境变量。如果是的话,我会在不影响云的情况下在本地激活一个静脉。因此,os.environ['KEY']
被重定向到venv变量。再说一次这只是个理论。
发布于 2021-12-29 09:42:59
您可以使用环境变量,您可以通过os.environ['KEY']
获得这些变量。
同样的代码将适用于本地开发和Heroku。
在Heroku上,使用ConfigVars heroku config:set KEY=val
定义这些变量,而在本地(例如,在.env
文件上)定义相同的变量(使用多滕诺夫加载它们)。.env
文件从未与源代码一起提交。
https://stackoverflow.com/questions/70518296
复制相似问题