У меня проблема с отправкой комментариев на сервер с помощью json и fetch в django

Я работаю над проектом книжного магазина, используя django и javascript. Я хочу позволить пользователю добавлять комментарии к каждой книге и отправлять комментарий без перезагрузки страницы, используя JSON

html:

    <form id="addcomment">
        {% csrf_token %}
        <input hidden name='thecommentuser' value="{{ request.user.id }}" id="commentsubmitter">
        <input hidden name='thecommentbook' value="{{ book.id }}" id="commentbook">
        <textarea  name='thecomment'id="comment"></textarea>
        <input type="submit">
    </form>

script:

         document.addEventListener('DOMContentLoaded', function() {

document.querySelector('#addcomment').onsubmit = function() {
  fetch('/comments', {
    method: 'POST',
    body: JSON.stringify({
        thecomment: document.querySelector('#comment').value,
        thecommentuser: document.querySelector('#commentsubmitter').value,
        thecommentbook: document.querySelector('#commentbook').value,
    })})}});

models.py:

class comments(models.Model): 
    comment =  models.CharField(max_length= 100)
    commentuser = models.ForeignKey('User', on_delete=models.CASCADE, default=None)
    commentbook = models.ForeignKey('books', on_delete=models.CASCADE, default=None)

    def serialize(self):
        return {
            'thecomment': self.comment,
            'thecommentuser': self.commentuser,
            'thecommentbook': self.commentbook
        }

urls.py:

urlpatterns = [
    path('comments', views.addcomments, name='comments')
]

views.py:

@csrf_exempt
@login_required
def addcomments(request):
    if request.method == 'POST':
        print('posted')
        data= json.loads(request.body)

        comment = data.get('thecomment', '')
        commentuser = data.get('thecommentuser')
        commentbook = data.get('thecommentbook', '')
            
        cuser = User.objects.get(id = commentuser)
        cbook = books.objects.get(id = commentbook)

        thecommentt = comments(
            thecomment=comment,
            thecommentuser=cuser, 
            thecommentbook=cbook
        )

        thecommentt.save()

когда я открываю комментарии на странице администратора, я не нахожу никаких отправленных данных и страница перезагружается при отправке комментария. порядок print('posted') в views.py не отображается при добавлении комментария и это означает, что запрос не отправляется, но я не знаю почему

вот что появляется у меня в окне терминала после добавления комментария:

[30/Oct/2022 01:47:19] "GET /book/1?csrfmiddlewaretoken=9QgGiDOUnVxMlxZQ6UkSmiO4auq5BLojV6iWW55qE9LER929Qj7WB8LVtkBfpnJ4&thecommentuser=1&thecommentbook=1&thecomment=Book HTTP/1.1" 200 14927

Я пробовал удалять if request.method == 'POST': в представлениях и печатать в представлениях, но ничего не изменилось

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