【发布时间】:2020-02-29 17:27:25
【问题描述】:
我的 django 应用程序有一个基于类的视图,它可以抓取填写在表单中的报价请求并将该信息存储在数据库中。
当有人这样做时,我想使用发送自己和电子邮件,并将数据包含在邮件主题和消息中。
我得到了正确的电子邮件部分,我可以发送预定义的消息。但找不到使用输入信息的方法。
这是我目前所拥有的:
urls.py
urlpatterns = [
path('', views.index, name='index'),
path('quote/', QuoteCreateView.as_view(), name='quote'),
path('quote/thankyou/', views.quoteThankyou, name='quote_thankyou'),
]
views.py
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')
models.py
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={})
感谢您的帮助。
【问题讨论】:
-
在 QuoteCreateView 类中,您可以覆盖 save() 方法并在其中包含对 quoteThankyou 的调用。顺便说一句,对于函数视图,命名约定将是 quote_thank_you,而不是驼峰式。
-
在视图内发送电子邮件时要小心。这将阻止下一个视图加载,直到电子邮件发送完毕。任何与此相关的问题都会导致网站挂起。您通常应该使用 celery 或类似的东西异步发送电子邮件。 medium.com/@EmadMokhtar/…