【发布时间】:2020-02-28 12:50:19
【问题描述】:
我已将 API 令牌作为环境变量存储在我的 wsgi 文件中。我可以在我的 Django 应用程序的一个实例中检索它,但不能在另一个实例中检索它。
我能够在我的管理员的 save_model 操作期间成功使用令牌。当我在管理命令中使用几乎相同的代码时,我得到一个身份验证错误。
我的 wsgi.py 文件:
import os
import sys
from django.core.wsgi import get_wsgi_application
os.environ['SLACK_TOKEN'] = '12344567890qazxswedcvfrtgbnhyujmkiolp'
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
application = get_wsgi_application()
工作 admin.py 用法:
import os
from slacker import Slacker
def save_model(self, request, obj, form, change):
if obj.condition == True:
super().save_model(request, obj, form, change)
token = os.getenv('SLACK_TOKEN')
slack = Slacker(token)
slack.chat.post_message('#test-channel', 'mymessage')
不工作的管理命令用法:
import os
from slacker import Slacker
def handle(self, *args, **options):
try:
#test condition
except:
token = os.getenv('SLACK_TOKEN')
slack = Slacker(token)
slack.chat.post_message('#newsflow-test', 'mymessage')
故障排除表明 env 变量未加载——当我运行管理命令或尝试在 Django shell 中检索令牌时,print(token) 产生无响应。
【问题讨论】:
标签: django environment-variables django-wsgi