gpt4 book ai didi

python - Django: 'Settings' 对象没有属性

转载 作者:行者123 更新时间:2023-12-02 17:04:31 26 4
gpt4 key购买 nike

根据我是在暂存还是生产中,我加载 settings.production 或 settings.staging。

现在我想检查是否设置了 CROSS_SUBDOMAIN_COOKIE,但我总是收到 'Settings' object has no attribute 'CROSS_SUBDOMAIN_COOKIE'。这只发生在生产中,因为我的 settings.staging 没有在那里加载。在 .staging 我写了 CROSS_SUBDOMAIN_COOKIE = True

from django.conf import settings

def mixpanel_id(self):
if settings.CROSS_SUBDOMAIN_COOKIE:
cross_subdomain_cookie = True
else:
cross_subdomain_cookie = False

最佳答案

您可以使用 getattr(..) [Python-doc]并为其添加一个默认值,例如:

from django.conf import settings

def mixpanel_id(self):
if <b>getattr(</b>settings, 'CROSS_SUBDOMAIN_COOKIE'<b>, False)</b>:
cross_subdomain_cookie = True
else:
cross_subdomain_cookie = False

所以这里我们默认设置False。如果 CROSS_SUBDOMAIN_COOKIE 丢失,我们将获得 False,否则 getattr(..) 将返回该属性的值。

请注意,返回 True/Falseif-else 可以简化为:

def mixpanel_id(self):
cross_subdomain_cookie = <b>bool(</b>getattr(settings, 'CROSS_SUBDOMAIN_COOKIE', False)<b>)</b>

如果属性总是是一个 bool 值,我们甚至可以这样写:

def mixpanel_id(self):
cross_subdomain_cookie = getattr(settings, 'CROSS_SUBDOMAIN_COOKIE', False)

如果默认值为 True 或其他值,您可以用该值替换 False

关于python - Django: 'Settings' 对象没有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52420526/

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