gpt4 book ai didi

python - Django env 设置在检查是否设置了 env 变量之前进行评估

转载 作者:太空宇宙 更新时间:2023-11-03 16:52:37 25 4
gpt4 key购买 nike

我正在尝试使用 values.SecretValue() 设置我的 aws 存储桶名称。要设置 Django 的媒体 url,我过去使用过:

AWS_STORAGE_BUCKET_NAME = values.SecretValue()
MEDIA_URL = 'https://s3.amazonaws.com/{}/'.format(AWS_STORAGE_BUCKET_NAME)

现在,即使 AWS_STORAGE_BUCKET_NAME 正确地从设置的环境变量中提取值,MEDIA_URL 仍为 https://s3.amazonaws.com/None/

这可以通过以下设置重现:

class Production(Common):

AWS_ACCESS_KEY_ID = values.SecretValue()
AWS_SECRET_ACCESS_KEY = values.SecretValue()
AWS_STORAGE_BUCKET_NAME = values.SecretValue()
MEDIA_URL = 'https://s3.amazonaws.com/{}/'.format(AWS_STORAGE_BUCKET_NAME)

print MEDIA_URL, AWS_STORAGE_BUCKET_NAME
# -> https://s3.amazonaws.com/None/ None

并通过使用此管理.py 运行服务器:

import os
import sys
from django.conf import settings

if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config")
os.environ.setdefault("DJANGO_CONFIGURATION", "Production")
os.environ.setdefault("DJANGO_AWS_STORAGE_BUCKET_NAME", "my-bucket")
os.environ.setdefault("DJANGO_SECRET_KEY", "my-secret")
os.environ.setdefault("DJANGO_AWS_ACCESS_KEY_ID", "my-key")
os.environ.setdefault("DJANGO_AWS_SECRET_ACCESS_KEY", "my-secret-key")

print settings.MEDIA_URL, settings.AWS_STORAGE_BUCKET_NAME, os.environ.get('DJANGO_AWS_STORAGE_BUCKET_NAME')
# -> https://s3.amazonaws.com/None/ my-bucket my-bucket

from configurations.management import execute_from_command_line
execute_from_command_line(sys.argv)

临时修复是使用属性在每次调用时评估变量:

@property
def MEDIA_URL(self):
return 'https://s3.amazonaws.com/{}/'.format(Production.AWS_STORAGE_BUCKET_NAME)

但在初始化时设置此值一次更有意义。

使用 Django 配置 1.0 和 Django 1.9.2

最佳答案

也许你可以尝试一些懒惰的事情:

from django.utils.functional import lazy

def get_media_url():
from django.conf import settings
return 'https://s3.amazonaws.com/{}/'.format(settings.AWS_STORAGE_BUCKET_NAME)

MEDIA_URL = lazy(get_media_url)()

关于python - Django env 设置在检查是否设置了 env 变量之前进行评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35732461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com