投稿にコメントを追加するフォームを作成していますが、ajaxはフォームデータをNoneとして送信するため、ajaxなしで動作しています。ajaxがdjangoと連携していません
AJAX:
<script>
$(function() {
$("#myform").on("submit", function(e) {
e.preventDefault();
$.ajax({
url: $(this).attr("action"),
type: 'POST',
data: $(this).serialize(),
beforeSend: function() {
$("#message").html("sending...");
},
success: function(data) {
confirm('worked')
}
});
});
});
</script>
形態:
<form action="{% url 'newcom' Post.id%}" id="myform">
<div class="input-group">
<input type="text" name="comment_body" class="form-control" placeholder="Leave a comment">
<div class="input-group-btn">
<button class="btn btn-success" id="message" type="submit">
<i class="glyphicon glyphicon-send"></i>
</button>
</div>
</div>
<br>
</form>
ビュー:
def new_comment(request, post_id):
body = request.GET.get('comment_body')
post = Post.objects.get(id=post_id)
Nat.objects.create(fromUser=request.user.username, toUser=post.created_by, content="commented on your post")
Comment.objects.create(post=post, created_by=request.user,
created_at=timezone.localtime(timezone.now()), comment=body)
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
POSTとして送信していますが、PythonコードではGETを使用しています。 ajaxでPOSTをGETに変更する必要があります。 –
@MilanChhedaいいえ、POST-GETリクエストは全て冪等でなければならない。 –