django - 我从 django send_messages() 收到一个错误 AttributeError 'str' object has no attribute send_messages()
问题描述
我不知道从哪里开始寻找 send_messages(); 中的 str 。我相信我的 URL 路径配置不正确,但我没有收到 ImproperlyConf Url 错误。我已附上用于查看 URL 的代码和我尝试从中发送电子邮件的模板
#views.py
def email_invite(request):
profile = get_object_or_404(Profile, user=request.user)
if request.method == 'POST':
form = EmailInviteForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
name = f'{cd["name"]}'
subject = f'{cd["name"]} has sent you a invitation'
email = f'{cd["email"]}'
to = [f'{cd["to"]}']
comment = f'{cd["comment"]}'
with open(str(settings.BASE_DIR.joinpath('templates/profiles/email/email_invite_message.txt'))) as f:
invite_message = f.read()
html_template = get_template('profiles/email/email_invite_message.html').render()
msg = EmailMultiAlternatives(subject, comment, invite_message, [email], [to], name)
msg.attach_alternative(html_template, "text/html")
msg.send()
messages.success(request, 'Your email has been sent')
return redirect('home')
# return HttpResponseRedirect(reverse('profiles:find_friends'))
else:
form = EmailInviteForm()
template = 'profiles/email_invite.html'
context = {
'form': form,
}
return render(request, template, context)
我认为是错误根源的 URL
#urls.py
path('email-invite/', views.email_invite, name='email_invite'),
#email_invite.html
{% extends '_base.html' %}
{% load crispy_forms_tags %}
{% block extra_title %}Email an invite{% endblock extra_title %}
{% block content %}
<div class="container">
<h1>Send a friend an invite to join you</h1>
<p class="pages-p">
Use the form to invite a friend or family member to sign up.
</p>
<form action="" method="post">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-outline-success"><i class="fas fa-envelope"></i></button>
</form>
</div>
{% endblock content %}
回溯错误是:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/code/profiles/views.py", line 187, in email_invite
msg.send()
File "/usr/local/lib/python3.8/site-packages/django/core/mail/message.py", line 284, in send
return self.get_connection(fail_silently).send_messages([self])
Exception Type: AttributeError at /profiles/email-invite/
Exception Value: 'str' object has no attribute 'send_messages'
任何方向都会很棒。我已经搜索了文档和网络,但我并不真正理解错误消息,当我将其放入搜索时,没有出现类似的情况。
TIA
解决方案
您将错误的参数传递给EmailMultiAlternatives
. 喜欢下面的代码
msg = EmailMultiAlternatives(subject, comment, invite_message, [email], [to], name)
你只能传递这些参数
EmailMultiAlternatives(subject='', body='', from_email=None, to=None, bcc=None, connection=None, attachments=None, headers=None, alternatives=None, cc=None, reply_to=None)
推荐阅读
- java - 从侦听器列表中删除侦听器
- excel - 尽管有所有数据,VLOOKUP 仅返回一些结果 [Office 365]
- django - 从 Django views.py 返回 HttpResponse 对象和渲染页面
- azure-active-directory - 在 Keycloack 和电子邮件属性中将 Azure AD 配置为身份提供程序 OIC
- mysql - 需要 SQL 查询输出
- jxbrowser - 使用 jxbrowser 6.23 和 6.23.1 在 Windows 10 中打开调试器窗口时出现问题
- c# - “Non-nullable field is uninitialized”的编译器错误,即使它已在 InitializeComponents 函数中初始化
- mysql - 表列中的 MySQL 查询更改
- reactjs - 如何根据在 reactjs 中检查的表列下载 csv 文件?
- java - 如何在自定义搜索引擎中处理包含多个单词的查询