python - Django 不会在错误 500 上向管理员发送电子邮件
问题描述
我的 Django 项目中有以下设置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = 'somemail@gmail.com'
SERVER_EMAIL = 'somemail@gmail.com'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'somemail@gmail.com' #your acc and pass
EMAIL_HOST_PASSWORD = 'somepassword'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
ADMINS = (('myusername', 'myemail@gmail.com'),)
但是有了这个 Django 仍然不会500 error
向管理员发送电子邮件。这里有什么问题?文档中说我应该在设置中输入全名ADMINS
。是默认模型的全名吗?User
如果我有空这些字段怎么办?更重要的是 - 没有验证字段应该是唯一的,并且可能存在与管理员同名的其他人?
PS send_mail()
frompython shell
适用于这些设置。
更新我的Logging
设置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'WARNING',
'class': 'logging.FileHandler',
'filename': os.path.join(BASE_DIR, 'debug.log'),
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'WARNING',
'propagate': True,
},
},
}
解决方案
在 settings.py 的 LOGGING 设置中,将以下块添加到处理程序
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
},
更新:
仅当 DEBUG 为 False 时要发送电子邮件时,才在上面的块中添加以下行。
'filters': ['require_debug_false'],
并在过滤器部分进行以下设置
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
更新:
添加如下mail_admin
_ handlers
_ loggers
'loggers': {
'django': {
'handlers': ['file', 'mail_admins'],
'level': 'INFO',
'propagate': True,
},
},
推荐阅读
- php - Laravel - 语言环境可选地作为 URL 中的第一个参数
- google-cloud-platform - 运行查询时出错:“无法运行查询:项目在数据区域中没有预留”
- powerbi - 矩阵视觉显示总值但仍限制日期
- vb6 - CDO 偶尔出现的问题(通过重置窗口解决)
- flutter - 试图理解 Dart 中的匿名函数
- powershell - PS 对象转义字符
- json - SPARK:如何使用 Spark 解析 JSON 对象数组
- assembly - 早期的 BIOS 如何使用 CALL?
- python - 与python打印/写入功能水平对齐?
- c++ - 在原生 Tizen TV 上使用 Elementary 访问多次阅读文本