Нужно из url сделать path в django, как именно?
Как из этой строчки url(r'^(?P<post_id>\d+)/share/$', views.post_share, name='post_share'),
сделать path? Вот как сделал это я path('share/<int:post_id>/', post_share, name='post_share'
Задача: сделать форму для отправки письма
urls.py
urlpatterns = [
path('', PostListView.as_view(), name = 'post_list'),
path('more/<slug:more_slug>/', post_detail, name='more_detail'),
path('share/<int:post_id>/', post_share, name='post_share')
]
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={ 'post': post,
'form': form,
'sent': sent}
return render(request, 'blog/share.html', dir)
Выскакивает такая ошибка:
NoReverseMatch at /more/pervyj-tovar/
Reverse for 'post_share' with no arguments not found. 1 pattern(s) tried: ['share/(?P<post_id>[0-9]+)/\\Z']