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 в цикле.
Я пробовал много раз, но он все еще показывает прямой ответ после отправки.
Любая помощь будет очень признательна. Спасибо