Json-ответ не возвращается через успех (Показывается прямой ответ после отправки)

Я создаю приложение для блога и пытаюсь сохранить экземпляр через ajax и Я возвращаю Json Response в представлении, но Json Response не возвращается успешно, вместо этого он показывает response после отправки формы, как {"action": "saved"},

Я пробовал изменить response, но он показывает именно возвращаемый ответ, Он должен show success message, но он не возвращает его. В Admin.

форма отправляется нормально.

views.py


def posts(request):
    posts = Blog.objects.all()

    if request.method == "POST":
        form = BlogForm(data=request.POST)
        if form.is_valid():
            new_post = form.save(commit=False)
            new_post.submit_by = request.user
            new_post.comment_of = comment
            new_post.save()

    else:
        form = BlogForm

    context = {'posts':posts,'form':form}
    return render(request, 'posts.html', context)

def EditAllPosts(request, blog_id):
    comment = get_object_or_404(Blog, pk=blog_id)

    if request.method == "POST":
        form = BlogForm(data=request.POST)
        if form.is_valid():
            new_post = form.save(commit=False)
            new_post.submit_by = request.user
            new_post.comment_of = comment
            new_post.save()
            return JsonResponse({'bool': True})

        else:
            return JsonResponse({'bool': form.errors})

posts.html


    {% for blog in posts %}

                    <form method="post" id="blog-form-" data-data="{{coms.pk}}" enctype="multipart/form-data" action="{% url 'EditAllPosts' blog.id %}">
                        {% csrf_token %} 
                            {{form}}
                            <input type="submit" data-data="{{coms.pk}}" onclick="saveInstancOnClick({{forloop.counter}})">
                    </form>

<script>
    $(document).ready(function(){

      function saveInstancOnClick(id) {
      document.getElementById(`blog-form-${forloop.counter}`);
            let thisElement = $(this);
            $.ajax({
                url: thisElement.attr('action'),
                type:"post",
                data:{
                    csrfmiddlewaretoken:"{{csrf_token}}"
                },
                dataType:'json',
                success: function(res) {
                  if (res.bool == true) {
                    alert("Worked")
                  }
                }
            });
        };
      })
</script>

{% endfor %}

Я использую forloop.counter, потому что я использую ajax в цикле.

Я пробовал много раз, но он все еще показывает прямой ответ после отправки.

Любая помощь будет очень признательна. Спасибо

Вернуться на верх