Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中通过基于类的表单发送数据的电子邮件_Python_Django_Email - Fatal编程技术网

Python 如何在Django中通过基于类的表单发送数据的电子邮件

Python 如何在Django中通过基于类的表单发送数据的电子邮件,python,django,email,Python,Django,Email,我在django应用程序上有一个基于类的视图,它获取表单中填写的报价请求,并将该信息存储在数据库中 当有人这样做时,我想使用“发送我自己”和“发送电子邮件”,并将数据包含在邮件主题和消息中 我正确地使用了电子邮件部分,可以发送预定义的消息。但找不到使用输入信息的方法 以下是我目前掌握的情况: url.py urlpatterns = [ path('', views.index, name='index'), path('quote/', QuoteCreateView.a

我在django应用程序上有一个基于类的视图,它获取表单中填写的报价请求,并将该信息存储在数据库中

当有人这样做时,我想使用“发送我自己”和“发送电子邮件”,并将数据包含在邮件主题和消息中

我正确地使用了电子邮件部分,可以发送预定义的消息。但找不到使用输入信息的方法

以下是我目前掌握的情况:

url.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={})
型号.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。不过,在视图中发送电子邮件时要小心。这将阻止加载下一个视图,直到电子邮件发送完毕。任何与此相关的问题都将导致网站挂起。您通常应该使用芹菜或类似的东西异步发送电子邮件。