【发布时间】:2019-09-20 12:37:08
【问题描述】:
我试图在我的应用程序中提交表单时发送电子邮件,我设法做到了,但由于某种原因,它每次发送两次。 经过一番搜索和调试,我想我知道问题出在哪里,但我不知道为什么。
所以我的应用程序的电子邮件发送功能发生在我的表单中。 py 看起来像这样:
class approvalForm(forms.ModelForm):
text1 = forms.ModelChoiceField(disabled = True, queryset = Visit.objects.all())
text2 = forms.ChoiceField(disabled = True, choices = poolnumber)
def save(self, commit=False):
instance = super(approvalForm, self).save(commit=commit)
ready = instance.visible
if ready is True:
self.send_email()
print('yay sent')
else:
None
return instance
def send_email(self):
var = self.cleaned_data
tomail = self.cleaned_data.get('visit')
tomails = tomail.location.users.all()
tomaillist = []
for item in tomails:
tomaillist.append(item.email)
print(tomaillist)
msg_html = render_to_string('myapp/3email.html', {'notify': var})
msg = EmailMessage(
'Text here',
msg_html,
'myemail@email.com',
tomaillist,
headers={'Message-ID': 'foo'},
)
msg.content_subtype = "html"
print("Email sent")
msg.send()
class Meta:
model = MyModels
fields = ('text1','text2', )
save() 函数运行了 2 次。我尝试将电子邮件发送功能移动到 form_valid() 函数中的 views.py,但它从未被调用,所以我尝试了 form_invalid() 但结果相同。
有什么办法不让 save() 函数运行 2 次?还是因为我的代码有错误?
【问题讨论】:
-
您正在节省
instance2 次span>
标签: django django-forms django-email