Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用admin更改settings.py变量?_Python_Django_Smtp - Fatal编程技术网

Python 如何使用admin更改settings.py变量?

Python 如何使用admin更改settings.py变量?,python,django,smtp,Python,Django,Smtp,我正在《Django》的“联系我们”页面上工作。我想允许管理员在django admin中更改他们的smtp、名称、密码和端口 因此,有一个表admin\u contact,可以通过admin页面进行修改。问题是我不知道如何设置电子邮件主机、电子邮件端口、电子邮件主机和用户 在settings.py内发送电子邮件\u主机\u密码(使用型号admin\u联系人),我必须将其设置为能够使用views.py中的发送邮件方法 有办法吗?这是强制解决方案,但它解决了我的问题 使用表单中的信息(电子邮件、密

我正在《Django》的“联系我们”页面上工作。我想允许管理员在
django admin
中更改他们的
smtp
名称
密码
端口

因此,有一个表
admin\u contact
,可以通过
admin
页面进行修改。问题是我不知道如何设置电子邮件主机、电子邮件端口、电子邮件主机和用户 在
settings.py
内发送电子邮件\u主机\u密码(使用型号
admin\u联系人
),我必须将其设置为能够使用
views.py中的
发送邮件
方法


有办法吗?

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

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

    CONFIG_HOST = "smtp.gmail.com"
    CONFIG_EMAIL = "mail@gmail.com"
    CONFIG_PASS = "******"
    CONFIG_PORT = "587"
    
  • 从您的设置导入电子邮件_config.py
  • 设置.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需要在更改信息后重新启动

    否(您必须直接使用smtp模块)