【发布时间】:2015-08-02 05:59:40
【问题描述】:
我的 Django 基本设置文件中有这些行(除其他外):
import os
STRIPE_PUBLIC_KEY = os.environ.get("STRIPE_PUBLIC_KEY", "your publishable test key")
STRIPE_SECRET_KEY = os.environ.get("STRIPE_SECRET_KEY", "your secret test key")
我在我的 virtualenv 中创建了这两个环境变量,如下所示:
export STRIPE_SECRET_KEY="sk_test_example"
export STRIPE_PUBLIC_KEY="pk_test_example"
当我运行 env | grep STRIPE,我明白了:
STRIPE_SECRET_KEY=sk_test_example
STRIPE_PUBLIC_KEY=pk_test_example
但由于某种原因,我不断收到此 Stripe 错误:“提供的 API 密钥无效:\”\u003C**** ****** **** 密钥\u003E\”。此键至少包含一个空格。请删除空格,然后重试。”
我尝试再次导出环境变量,一次不带引号,一次带单引号,得到相同的结果,所以我尝试从设置文件中打印 STRIPE_SECRET_KEY 和 STRIPE_PUBLIC_KEY,它返回默认值,“您的可发布的测试密钥”和“您的秘密测试密钥”。所以这就是为什么有空格。但是为什么没有拾取环境变量呢?
所以我尝试摆脱基本设置中的默认值,使变量看起来像这样:
STRIPE_PUBLIC_KEY = os.environ.get("STRIPE_PUBLIC_KEY")
STRIPE_SECRET_KEY = os.environ.get("STRIPE_SECRET_KEY")
这引发了 NoneType 错误。我还尝试了以下方法:
STRIPE_PUBLIC_KEY = os.environ['STRIPE_PUBLIC_KEY']
STRIPE_SECRET_KEY = os.environ['STRIPE_SECRET_KEY']
这引发了“KeyError:u'STRIPE_PUBLIC_KEY'”。我需要改变什么?我真的不想硬编码这些 API 密钥。
【问题讨论】:
-
您能确认您使用的是什么外壳吗?
-
当然。我正在使用 bash。
标签: python django environment-variables stripe-payments