Django报错AttributeError: Settings无STRIPE_PUBLIC_KEY属性
Django 项目 Stripe 配置 AttributeError 排查修复方案
报错核心原因是Django配置对象中找不到代码引用的STRIPE_PUBLIC_KEY属性,按以下步骤排查修复即可:
注意:你虽然是在添加
stripe.api_key = settings.STRIPE_SECRET_KEY代码行后触发报错,但报错指向缺失STRIPE_PUBLIC_KEY,说明项目中已有其他逻辑(比如支付页渲染、其他视图函数、上下文处理器)提前引用了Stripe公钥配置,不是你刚加的密钥赋值行本身拼写错误,不用在这行反复核对。
- 检查项目
settings.py顶层作用域是否定义了所需的Stripe配置项
直接在settings.py文件中补上两个Stripe相关配置即可,测试阶段可以先填Stripe后台拿到的测试密钥:
注意:生产环境不要把密钥硬编码在代码文件里,建议通过系统环境变量读取,避免密钥泄露。# Stripe 支付配置 STRIPE_PUBLIC_KEY = "pk_test_xxx 替换为你的Stripe测试公钥" STRIPE_SECRET_KEY = "sk_test_xxx 替换为你的Stripe测试私钥" - 如果你用
.env文件存储密钥,检查变量命名是否完全匹配
比如.env里写的变量名是STRIPE_PUB_KEY,但代码里调用的是STRIPE_PUBLIC_KEY,或者大小写不一致,都会触发属性不存在的报错,两边变量名必须完全一致。 - 改完配置后必须重启Django开发服务
Django只会在启动时一次性加载settings配置,修改配置文件后,先按Ctrl+C终止当前运行的服务,再重新执行python manage.py runserver启动,新配置才会生效。 - 多配置文件场景检查当前生效的settings文件
如果你的项目拆分了开发/生产/测试多套settings配置,确认你把Stripe配置写到了当前启动服务指定的settings文件里,不要出现配置写到生产settings、本地启动用开发settings的情况。
配置完成后可以通过Django shell验证是否加载成功,在项目目录执行命令:
python manage.py shell
进入交互环境后依次执行以下代码,能正常打印出密钥值、不抛AttributeError就说明配置生效:
from django.conf import settings print(settings.STRIPE_PUBLIC_KEY) print(settings.STRIPE_SECRET_KEY)
内容的提问来源于stack exchange,提问作者Abdul Basit
相关产品推荐
相关产品推荐

