Reputation: 41
I am trying to send a templated email to a contact saved in a database. How can pre enter the email detail of the contact and remove the forms. I have tried to replace recipient = str(sub['Email'].value())
by recipient = str(sub['lead.id'].value())
but it didn`t work.
views.py
@login_required(login_url="/login/")
def subscribe(request, lead_id):
lead = Lead.objects.get(pk=lead_id)
sub = forms.Subscribe()
if request.method == 'POST':
sub = forms.Subscribe(request.POST)
subject = 'Introduction'
message = 'Good morning,'
recipient = str(sub['Email'].value())
send_mail(subject,
message, EMAIL_HOST_USER, [recipient], fail_silently = False)
return render(request, 'subscribe/success.html', {'recipient': recipient, 'lead': lead})
return render(request, 'subscribe/index.html', {'form':sub, 'lead': lead})
forms.py
class Subscribe(forms.Form):
Email = forms.EmailField()
def __str__(self):
return self.Email
urls.py
url(r'^(?P<lead_id>[0-9]+)/subscribe$', views.subscribe, name='subscribe'),
Many Thanks
Upvotes: 1
Views: 56
Reputation: 391
You can iterate through all your Contacts on the index page with their names between anchor tags and href as url to subscribe with a parameter lead_id as persons id
lets say you sent the context to index page as contacts
{% for i in contacts%}
<a href='{% url 'subscribe' lead_id=i.id %}'> {{i.name}}</a>
{% endfor %}
Now inside your subscribe function
@login_required(login_url="/login/")
def subscribe(request, lead_id):
lead = Lead.objects.get(pk=lead_id)
subject = 'Introduction'
message = 'Good morning,'
recipient = lead.email
send_mail(subject,
message, EMAIL_HOST_USER, [recipient], fail_silently = False)
return render(request, 'subscribe/success.html', {'recipient': recipient, 'lead': lead})
Upvotes: 1