forms.py
from django import forms
from django.urls import reverse
class EmailPostForm(forms.Form):
name = forms.CharField(max_length=25)
email = forms.EmailField()
to = forms.EmailField()
comments = forms.CharField(required=False,
widget=forms.Textarea)
def get_absolute_url(self):
return reverse('post_share', kwargs={'id': self.id})
views.py
def post_share(request,post_id):
# Retrieve post by id
post = get_object_or_404(Post, pk=post_id, status='published')
sent = False
if request.method == 'POST':
# Form was submitted
form = EmailPostForm(request.POST)
if form.is_valid():
# Form fields passed validation
cd = form.cleaned_data
post_url = request.build_absolute_uri(post.get_absolute_url())
subject = '{} ({}) recommends you reading "{}"'.format(cd['name'], cd['email'], post.title)
message = 'Read "{}" at {}\n\n{}\'s comments: {}'.format(post.title, post_url, cd['name'], cd['comments'])
send_mail(subject, message, 'admin@myblog.com', [cd['to']])
sent = True
else:
form = EmailPostForm()
dir={ 's_post': post,
'form': form,
'sent': sent}
return render(request, 'blog/share.html', dir)
urls.py
path('share/<int:post_id>', post_share, name='post_share')
шаблон
{% extends "blog/base.html" %}
{% block title %}{{ post.title }}{% endblock %}
{% block content %}
<h1>{{ more.title }}</h1>
<p class="date">
Published {{ more.publish }} by {{ more.author }}
</p>
{{ post.body|linebreaks }}
<p>
<a href="{{ post.get_absolute_url }}">Share this post</a>
</p>
{% endblock %}
Нажима на 'share this post' и ничего не происходит