Python 如何在Django中通过基于类的表单发送数据的电子邮件
我在django应用程序上有一个基于类的视图,它获取表单中填写的报价请求,并将该信息存储在数据库中 当有人这样做时,我想使用“发送我自己”和“发送电子邮件”,并将数据包含在邮件主题和消息中 我正确地使用了电子邮件部分,可以发送预定义的消息。但找不到使用输入信息的方法 以下是我目前掌握的情况: url.pyPython 如何在Django中通过基于类的表单发送数据的电子邮件,python,django,email,Python,Django,Email,我在django应用程序上有一个基于类的视图,它获取表单中填写的报价请求,并将该信息存储在数据库中 当有人这样做时,我想使用“发送我自己”和“发送电子邮件”,并将数据包含在邮件主题和消息中 我正确地使用了电子邮件部分,可以发送预定义的消息。但找不到使用输入信息的方法 以下是我目前掌握的情况: url.py urlpatterns = [ path('', views.index, name='index'), path('quote/', QuoteCreateView.a
urlpatterns = [
path('', views.index, name='index'),
path('quote/', QuoteCreateView.as_view(), name='quote'),
path('quote/thankyou/', views.quoteThankyou, name='quote_thankyou'),
]
class QuoteCreateView(CreateView):
login_required = False
model = Quote
fields = ['fullname','email','date','description']
def form_valid(self,form):
form.instance.author = self.request.user
return super().form_valid(form)
def quoteThankyou(request):
subject = 'Message subject'
message = 'Message'
send_mail(
subject,
message,
'sender@email.com',
['receiver@email.com'],
fail_silently=False,
)
return render(request,'blog/quote_thankyou.html')
class Quote(models.Model):
fullname = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
date_sent = models.DateTimeField(default=timezone.now)
date = models.DateTimeField()
description = models.TextField()
def __str__(self):
return self.fullname
def get_absolute_url(self):
return reverse('quote_thankyou', kwargs={})
视图.py
urlpatterns = [
path('', views.index, name='index'),
path('quote/', QuoteCreateView.as_view(), name='quote'),
path('quote/thankyou/', views.quoteThankyou, name='quote_thankyou'),
]
class QuoteCreateView(CreateView):
login_required = False
model = Quote
fields = ['fullname','email','date','description']
def form_valid(self,form):
form.instance.author = self.request.user
return super().form_valid(form)
def quoteThankyou(request):
subject = 'Message subject'
message = 'Message'
send_mail(
subject,
message,
'sender@email.com',
['receiver@email.com'],
fail_silently=False,
)
return render(request,'blog/quote_thankyou.html')
class Quote(models.Model):
fullname = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
date_sent = models.DateTimeField(default=timezone.now)
date = models.DateTimeField()
description = models.TextField()
def __str__(self):
return self.fullname
def get_absolute_url(self):
return reverse('quote_thankyou', kwargs={})
型号.py
urlpatterns = [
path('', views.index, name='index'),
path('quote/', QuoteCreateView.as_view(), name='quote'),
path('quote/thankyou/', views.quoteThankyou, name='quote_thankyou'),
]
class QuoteCreateView(CreateView):
login_required = False
model = Quote
fields = ['fullname','email','date','description']
def form_valid(self,form):
form.instance.author = self.request.user
return super().form_valid(form)
def quoteThankyou(request):
subject = 'Message subject'
message = 'Message'
send_mail(
subject,
message,
'sender@email.com',
['receiver@email.com'],
fail_silently=False,
)
return render(request,'blog/quote_thankyou.html')
class Quote(models.Model):
fullname = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
date_sent = models.DateTimeField(default=timezone.now)
date = models.DateTimeField()
description = models.TextField()
def __str__(self):
return self.fullname
def get_absolute_url(self):
return reverse('quote_thankyou', kwargs={})
感谢您的帮助。您可以定义成功url,当收到有效表单时,重定向到指定的url 它将如下所示: views.py
from django.urls import reverse
class QuoteCreateView(CreateView):
login_required = False
model = Quote
fields = ['fullname','email','date','description']
success_url = reverse('quote_thankyou')
def form_valid(self,form):
form.instance.author = self.request.user
return super().form_valid(form)
def quoteThankyou(request):
subject = 'Message subject'
message = 'Message'
send_mail(
subject,
message,
'sender@email.com',
['receiver@email.com'],
fail_silently=False,
)
return render(request,'blog/quote_thankyou.html')
这会在提交有效表单后将用户重定向到url“quote_Thankyu”,视图将发送电子邮件。在QuoteCreateView类中,您可以覆盖save()方法,并在其中包含对quoteThankyou的调用。顺便说一句,对于函数视图,命名约定是quote_thanky_you,而不是camel。不过,在视图中发送电子邮件时要小心。这将阻止加载下一个视图,直到电子邮件发送完毕。任何与此相关的问题都将导致网站挂起。您通常应该使用芹菜或类似的东西异步发送电子邮件。