无法弄清楚如何在views.py中的forms.py中调用send_email 任何人都可以帮助我。这是一个范围问题
forms.py
from django import forms
from django.core.mail import send_mail
class ContactForm(forms.Form):
subject = forms.CharField(max_length=75)
message = forms.CharField(widget=forms.Textarea)
sender = forms.EmailField()
def send_email(self):
send_mail(subject, message, sender, 'TheAndrewFranklin@gmail.com', fail_silently=False)
print('sent')
和这里的views.py
views.py
from django.shortcuts import render
from django.views.generic.edit import FormView
from .forms import ContactForm
...
class ContactView(FormView):
template_name = "main/contact.html"
form_class = ContactForm
success_url = '/thanks/'
def form_valid(self, form):
ContactForm.send_email(form)
return super(ContactView, self).form_valid(form)
答案 0 :(得分:1)
对于初学者,您只需调用ContactForm.send_email
,这只有在这是一种类方法时才有效(如果您对类方法感兴趣,请参阅here)。您需要在您创建的实例send_email
上调用form_class
:
class ContactView(FormView):
template_name = "main/contact.html"
form_class = ContactForm
success_url = '/thanks/'
def form_valid(self, form):
form_class.send_email(form)
return super(ContactView, self).form_valid(form)
除此之外,我建议验证是否正确配置了电子邮件服务器和设置。因此,请确保您能够从简单的python脚本发送电子邮件。