'AssertionError' 对象没有属性 'message'
'AssertionError' object has no attribute 'message'
我正在处理 django 中的表单,一旦填满就会向用户发送一封电子邮件,但我收到以下错误:
error image
我检查了我的代码,我的问题来自这个函数:
def send_manually_exception_email(request, e):
exc_info = sys.exc_info()
reporter = ExceptionReporter(request, is_email=True, *exc_info)
subject = e.message.replace('\n', '\n').replace('\r', '\r')[:989]
message = "%s\n\n%s" % (
'\n'.join(traceback.format_exception(*exc_info)),
reporter.filter.get_request_repr(request)
)
mail.mail_admins(subject, message, fail_silently=True, html_message=reporter.get_traceback_html())
我能做什么?
异常对象 e
而不是 本身具有 message
属性。例如,如果有这样的属性,您可以检索它,如果没有这样的属性,则使用空字符串 getattr(…)
[python-doc]:
def send_manually_exception_email(request, e):
exc_info = sys.exc_info()
reporter = ExceptionReporter(request, is_email=True, *exc_info)
subject = <b>getattr(</b>e<b>, 'message', '')</b>.replace('\n', '\n').replace('\r', '\r')[:989]
message = "%s\n\n%s" % (
'\n'.join(traceback.format_exception(*exc_info)),
reporter.filter.get_request_repr(request)
)
mail.mail_admins(subject, message, fail_silently=True, html_message=reporter.get_traceback_html())
虽然总比崩溃好,但 OP 可能不想生成主题行为空的电子邮件。您可以只使用错误的字符串表示形式,例如:
print(e)
print(f'Function x gave error {e}')
在OP的代码中,设置一下就可以了:
subject = str(e)
或者如果错误没有消息,则使用此作为替代方法:
subject = getattr(e, 'message', str(e)).replace('\n', '\n').replace('\r', '\r')[:989]
我正在处理 django 中的表单,一旦填满就会向用户发送一封电子邮件,但我收到以下错误:
error image
我检查了我的代码,我的问题来自这个函数:
def send_manually_exception_email(request, e):
exc_info = sys.exc_info()
reporter = ExceptionReporter(request, is_email=True, *exc_info)
subject = e.message.replace('\n', '\n').replace('\r', '\r')[:989]
message = "%s\n\n%s" % (
'\n'.join(traceback.format_exception(*exc_info)),
reporter.filter.get_request_repr(request)
)
mail.mail_admins(subject, message, fail_silently=True, html_message=reporter.get_traceback_html())
我能做什么?
异常对象 e
而不是 本身具有 message
属性。例如,如果有这样的属性,您可以检索它,如果没有这样的属性,则使用空字符串 getattr(…)
[python-doc]:
def send_manually_exception_email(request, e):
exc_info = sys.exc_info()
reporter = ExceptionReporter(request, is_email=True, *exc_info)
subject = <b>getattr(</b>e<b>, 'message', '')</b>.replace('\n', '\n').replace('\r', '\r')[:989]
message = "%s\n\n%s" % (
'\n'.join(traceback.format_exception(*exc_info)),
reporter.filter.get_request_repr(request)
)
mail.mail_admins(subject, message, fail_silently=True, html_message=reporter.get_traceback_html())
虽然总比崩溃好,但 OP 可能不想生成主题行为空的电子邮件。您可以只使用错误的字符串表示形式,例如:
print(e)
print(f'Function x gave error {e}')
在OP的代码中,设置一下就可以了:
subject = str(e)
或者如果错误没有消息,则使用此作为替代方法:
subject = getattr(e, 'message', str(e)).replace('\n', '\n').replace('\r', '\r')[:989]