Удаление по id из MongoDB в приложении Angular-Django
Я написал следующий код для удаления определенных клиентов из коллекции MongoDB:
Ангулярная служба:
deletepost(id: number): Observable<Post> {
const url = `${this.baseApiUrl}` + `/handle_post/` + id;
return this.httpClient.delete<Post>(url)
.pipe(
retry(3),
catchError(this.handleError)
);
}
Django view:
@csrf_exempt
@api_view(['GET', 'DELETE', 'PUT'])
def handle_post_by_id(request, id):
try:
post = PostModel.objects.get(pk=id)
except PostModel.DoesNotExist:
exceptionError = {
'message': "Post with id = %s" %id,
'posts': "[]",
'error': ""
}
return JsonResponse(exceptionError, status=status.HTTP_404_NOT_FOUND)
if request.method == 'DELETE':
try:
post.delete()
posts_serializer = PostModelSerializer(post)
return HttpResponse(status=status.HTTP_204_NO_CONTENT)
except:
exceptionError = {
'message': "Cannot delete post!",
'posts': [posts_serializer.data],
'error': ""
}
return JsonResponse(exceptionError, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Он никогда не достигает этого метода, который принимает id, а вместо этого переходит к следующему методу:
@csrf_exempt
@api_view(['GET', 'POST', 'DELETE', 'PUT'])
def handle_post(request):
if request.method == 'DELETE':
try:
PostModel.objects.all().delete()
posts_collection.delete_many({})
return HttpResponse(status=status.HTTP_204_NO_CONTENT)
except:
exceptionError = {
'message': "Cannot delete successfully!",
'customers': "[]",
'error': ""
}
return JsonResponse(exceptionError, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Мои URL следующие:
urlpatterns = [
url(r'^handle_post/', handle_post),
url(r'^handle_post/(?P<id>\d+)/$', handle_post_by_id),
]
Что я делаю не так, что когда я пытаюсь удалить клиента с id, он переходит к другому методу и удаляет всех?