Как я могу отправить электронное письмо с данными, размещенными в форме для класса в Django - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть представление на основе класса в моем приложении 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={})

Я ценю вашу помощь.

1 Ответ

0 голосов
/ 01 марта 2020

Вы можете определить success_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_thankyou» после отправки действительной формы, и представление отправит электронное письмо.

...