【问题标题】:How to change settings.py variables using admin?如何使用管理员更改 settings.py 变量?
【发布时间】:2016-07-05 20:02:59
【问题描述】:

我正在Django 中创建“联系我们”页面。我想允许管理员在django admin 中更改他们的smtpnamepasswordport

所以有一个表admin_contact 可以通过admin 页面进行修改。问题是我不知道如何设置 EMAIL_HOST,EMAIL_PORT,EMAIL_HOST_USER 和 settings.py 内的 EMAIL_HOST_PASSWORD(使用模型 admin_contact),我必须设置它才能在 views.py 中使用 send_mail 方法。

有没有办法做到这一点?

【问题讨论】:

  • 没有。 (你必须直接使用 smtp 模块)

标签: python django smtp


【解决方案1】:

这是强制解决方案,但它解决了我的问题。

  1. 使用表单中的信息(电子邮件、密码、smtp 等)生成文件 (email_config.py)。

email_config.py

CONFIG_HOST = "smtp.gmail.com"
CONFIG_EMAIL = "mail@gmail.com"
CONFIG_PASS = "******"
CONFIG_PORT = "587"
  1. 从您的设置中导入 email_config.py。

setting.py

from email_config import CONFIG_HOST, CONFIG_EMAIL, CONFIG_PASS, CONFIG_PORT

...

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
# G-mail
EMAIL_HOST = CONFIG_HOST
EMAIL_HOST_USER = CUSTOM_EMAIL
EMAIL_HOST_PASSWORD = CONFIG_PASS
EMAIL_PORT = CONFIG_PORT
EMAIL_FROM_EMAIL = EMAIL_HOST_USER
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER

测试

> python manage.py shell
> from django.core.mail import EmailMessage
> msg = EmailMessage("Hi, man","This is a test message",to=["juan@gmail.com"])
> msg.send()
1

Apache 和 mod_wgsi 需要在更改信息后重启

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 2015-06-10
    相关资源
    最近更新 更多