DjangoでECマーケットプレイスを構築しております。
ショップの一覧ページとショップの詳細ページを作成して、ショップの詳細ページでは各ショップ宛にメールを送れるようにしたいと考えております。
しかし、ショップ詳細ページでメールを送信する際にsend_mailのrecipient_listを各ショップのアドレスに変更するにはどうすればいいかわからないため、ご指南いただけると幸いです。
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\n内容:\n' + contents + '\n\n返信先:\n' + from_email to = <<ここを各Shopごとのアドレスにしたい>> send_mail(subject, message, settings.EMAIL_HOST_USER, to)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。