Django 设置 - DEFAULT_FROM_EMAIL 的动态值
Django settings - dynamic value for DEFAULT_FROM_EMAIL
我希望能够从管理员更改发件人电子邮件地址。但是,默认发件人电子邮件在 settings.py
和 DEFAULT_FROM_EMAIL
中指定。
实现此目标的好方法是什么?
编辑:
这里的主要问题是 DEFAULT_FROM_EMAIL
被我项目中包含的第三方应用程序使用,我想避免弄乱他们的代码,原因很明显...
不要使用 settings.py 进行动态设置。有一个很棒的应用程序:
尚未对此进行测试,但我认为这可能是解决此特定问题的一种方法。这似乎可以很好地解决问题。欢迎评论!
from UserString import UserString
def get_dynamic_sender():
return "Sender A" # expand here...
class DynamicEmailValue(UserString):
_data = None
@property
def data(self):
return self._data.format(name=get_dynamic_sender())
@data.setter
def data(self, value):
self._data = value
此 class 的实例的行为与常规字符串一样:
>>> DEFAULT_FROM_EMAIL = DynamicEmailValue('{name} <some.mail@example.com>')
>>> DEFAULT_FROM_EMAIL
'Sender A <some.mail@example.com>'
>>> "sent by " + DEFAULT_FROM_EMAIL + " two days ago"
'sent by Sender A <some.mail@example.com> two days ago'
>>> "from: {}".format(DEFAULT_FROM_EMAIL)
'from: Sender A <some.mail@example.com>'
>>> "from: %s" % DEFAULT_FROM_EMAIL
'from: Sender A <some.mail@example.com>'
>>> dynamic_sender = "Sender B"
>>> "from: %s" % DEFAULT_FROM_EMAIL
'from: Sender B <some.mail@example.com>'
注:
- 仅适用于 Python 2.x
- 未使用 Django 进行 100% 测试(设置可能会缓存在某些地方等)
- 在初始化 (
DEFAULT_FROM_EMAIL = 'new value'
) 后为其分配一个新值会使整个事物静音,除非新值还包含 {name}
。但是设置不应该被写入,所以这可能不会发生……希望……是的……
我希望能够从管理员更改发件人电子邮件地址。但是,默认发件人电子邮件在 settings.py
和 DEFAULT_FROM_EMAIL
中指定。
实现此目标的好方法是什么?
编辑:
这里的主要问题是 DEFAULT_FROM_EMAIL
被我项目中包含的第三方应用程序使用,我想避免弄乱他们的代码,原因很明显...
不要使用 settings.py 进行动态设置。有一个很棒的应用程序:
尚未对此进行测试,但我认为这可能是解决此特定问题的一种方法。这似乎可以很好地解决问题。欢迎评论!
from UserString import UserString
def get_dynamic_sender():
return "Sender A" # expand here...
class DynamicEmailValue(UserString):
_data = None
@property
def data(self):
return self._data.format(name=get_dynamic_sender())
@data.setter
def data(self, value):
self._data = value
此 class 的实例的行为与常规字符串一样:
>>> DEFAULT_FROM_EMAIL = DynamicEmailValue('{name} <some.mail@example.com>')
>>> DEFAULT_FROM_EMAIL
'Sender A <some.mail@example.com>'
>>> "sent by " + DEFAULT_FROM_EMAIL + " two days ago"
'sent by Sender A <some.mail@example.com> two days ago'
>>> "from: {}".format(DEFAULT_FROM_EMAIL)
'from: Sender A <some.mail@example.com>'
>>> "from: %s" % DEFAULT_FROM_EMAIL
'from: Sender A <some.mail@example.com>'
>>> dynamic_sender = "Sender B"
>>> "from: %s" % DEFAULT_FROM_EMAIL
'from: Sender B <some.mail@example.com>'
注:
- 仅适用于 Python 2.x
- 未使用 Django 进行 100% 测试(设置可能会缓存在某些地方等)
- 在初始化 (
DEFAULT_FROM_EMAIL = 'new value'
) 后为其分配一个新值会使整个事物静音,除非新值还包含{name}
。但是设置不应该被写入,所以这可能不会发生……希望……是的……