我遇到此错误。我是Django的新手。我正在尝试使用django发送邮件。
Tracke Back:
response = self.process_exception_by_middleware(e, request)
File "/home/bari/Desktop/email_send/env/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/bari/Desktop/email_send/Simple_Email_Send_Project/email_app/views.py", line 36, in send_mail
message_body = form.changed_data["message_body"]
TypeError: list indices must be integers or slices, not str
[05/Jun/2020 17:55:22] "POST / HTTP/1.1" 500 69463
我的views.py
def send_mail(request):
form = SendMailForm(request.POST)
template = 'send_mail.html'
if form.is_valid():
subject = form.cleaned_data["subject"]
message_body = form.changed_data["message_body"]
email_address = form.cleaned_data["email_address"]
try:
mail = EmailMessage(subject, message_body, settings.EMAIL_HOST_USER, [email_address])
mail.send()
return render(request, template,
{'email_form': form, 'error_message': 'Sent mail to {}'.format(email_address)})
except:
return render(request, template,
{'email_form': form, 'error_message': 'Email Send failed. Please try again later'})
我该如何解决这个问题?帮助将受到高度赞赏...
根据this link处的Django文档>>
form.changed_data返回模型中字段的名称,这些数据已更改为初始表单。因为您的代码中没有任何初始参数,所以我认为它是一个typo
。message_body = form.cleaned_data["message_body"]