Почему первый параметр передается как id в представлениях в django
при написании урлов, если я пишу позицию interchange int:post_id с share, это не работает.
urls.py приложения
urlpatterns = [
#path("",views.list_view,name="post_list"),
path("",views.PostListView.as_view(),name="post_list"),
path("<str:post>/<int:id>/",views.post_detail,name="post_details"),
path('<int:post_id>/share/',views.post_share,name="post_share"),
#if i write a path like this
path('share/<int:post_id>/',views.post_share,name="post_share"),
#it is not working.
]
views.py (единственная часть, где у меня проблема)
def post_share(request,post_id):
#post=get_object_or_404(Post,status=Post.Status.PUBLISHED,id=post_id)
#post=get_object_or_404(Post,status=Post.Status.PUBLISHED,id=id)
post = get_object_or_404(Post,id=post_id, status=Post.Status.PUBLISHED)
#post=Post.objects.get(id=3)
sent=False
if request.method=='POST':
form=EmailPostForm(request.POST)
if form.is_valid():
cd=form.cleaned_data
print(cd)
post_url=request.build_absolute_uri(post.get_absolute_url)
subject=f"{cd['name']} recommends {post.title}"
message=f'Here is the link to read {post_url}'
send_mail(subject,message,'abcxyzalpha42@gmail.com',[cd['to']])
sent=True
else:
form=EmailPostForm()
context={'form':form,'post':post,'sent':sent}
return render(request,'app1/post/post_share.html',context)