Я строю рыночную площадь с Джанго.
Мы создали страницу со списком магазинов и страницу с информацией о магазине. Кроме того, я хотел бы иметь возможность отправлять почту в каждый магазин на странице сведений о магазине.
Однако мы не знаем, как при отправке почты на странице сведений о магазине изменить адрес получателя send_mail на mailAddress каждого магазина.
■ view.py
from django.views import generic
from django.views.generic.edit import ShopView
from django.views.generic.edit import FormMixin
from .models import Shop
from .forms import ContactForm
class ShopView(FormMixin, generic.DetailView):
model = Shop
form_class = ContactForm
def get_template_names(self):
return 'shopSearch/shop_detail.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
return context
def get_success_url(self):
return 'contact/finish/'
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = self.get_form()
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
def form_valid(self, form):
form.send_email()
return super().form_valid(form)
■ model.py
class Shop(models.Model):
name = models.CharField(max_length=255)
mailAddress = models.CharField(max_length=100, null=True, blank=True)
■ form.py
from django import forms
from django.core.mail import send_mail
from django.conf import settings
class ContactForm(forms.Form):
title = forms.CharField()
email = forms.EmailField()
contents = forms.CharField(widget=forms.Textarea)
def send_email(self):
subject = self.cleaned_data['title']
from_email = self.cleaned_data['email']
contents = self.cleaned_data['contents']
message = '\n\ncontens:\n' + contents + '\n\nfrom to:\n' + from_email
to = <<mailAddress for each shop>>
send_mail(subject, message, settings.EMAIL_HOST_USER, to)