Почему первый параметр передается как 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)
Вернуться на верх