首页 > 解决方案 > 当 axios 请求 Http 请求,但 url 改变并创建 [object%20Object]

问题描述

我想通过 Axios 到 Django View 的 http 请求删除我的 Django DB 中的一个对象。但是 POST url 被添加了一个奇怪的东西,[object%20Object]。这似乎是转换的问题,但我不明白为什么会发生这种情况。我做错了什么?

这是 axios 的一部分。

<script>
    // Delete review
    const deleteBtns = document.getElementsByClassName("delete");

    function handleClickDelete(event){
        event.preventDefault();
        const deleteBtn = event.target;
        const pk = deleteBtn.value;
        const review = document.getElementById(`${pk}`);
        
        review.hidden = true

        axios.post({
            url:"{% url 'reviews:delete' %}",
            data:{
                "pk": pk
            }
        })
        .then(res => alert("the review is deleted!"))
        .catch(errors => console.log(errors.response.data));
        
    }

    for (const deleteBtn of deleteBtns) {
        deleteBtn.addEventListener("click", handleClickDelete);
    }

</script>

Django urls.py

app_name = "reviews"
urlpatterns = [
    path(
        "api/<int:pk>/review/create/",
        review_views.create_review,
        name="create",
    ),
    path(
        "api/review/delete/",
        review_views.delete_review,
        name="delete",
    ),
    path(
        "api/review/update/",
        review_views.update_review,
        name="update",
    ),
]

和 view.py

def delete_review(request):
    if request.method == "POST":
        pk = request.POST.get("pk")
        review = models.Review.objects.get(pk=pk)
        review.delete()

    return JsonResponse({"status": "Success"})

标签: javascriptpythondjangoaxios

解决方案


推荐阅读