Метод отправки Ajax в Django. Всегда приводит к «Не Ajax»

#javascript #python #html #ajax #django

#javascript #питон #HTML #аякс #джанго

Вопрос:

Я пытался создать AJAX-функцию, которая отправляет две переменные JS, Score и Mistake, обратно в серверную часть Django и обновляет с их помощью расширенную пользовательскую модель.

Чтобы сделать это, я начал с функции AJAX, которая выглядит следующим образом:

 $(document).ready(function() {
       $("#test").submit(function(event){
         event.preventDefault();
         console.log("form submitted!");
            $.ajax({
                 type:"POST",
                 url:"/update/quiz/",
                 data: {
                        csrfmiddlewaretoken: window.CSRF_TOKEN,
                        'score': score,
                        'mistake' : mistake
                        },
                 success: function(){
                     $('#message').html("<h2>Contact Form Submitted!</h2>") 
                 }
            });
            return false;
       });
});
  

Views.py

 class Quiz(TemplateView):
    template_name='quiz.html'

    def post(self, request, *args, **kwargs):
        if request.is_ajax():
          message = "Yes, Ajax!"
        else:
          message = "Not Ajax!"
        return HttpResponse(message)
  

URLS.py

 from django.urls import path

from home.views import HomepageName, Homepage, Quiz
from . import views

urlpatterns = [
    path('quiz/', Quiz.as_view()),  
    path('update/quiz/', Quiz.post),
    path('<slug:slug>/', HomepageName.as_view()),
    path('', Homepage.as_view()),
]
  

И шаблон

 <form method='POST' id ='test'>
        {% csrf_token %}
        <input type='submit' value='Test button'/>
        <div id = 'message'>Initial text</div>
</form>
  

Я уже пытался изменить маршрутизацию URL-адресов и добавить новый URL-адрес, думая, что это сработает, но при нажатии кнопки Отправки он всегда загружает новую страницу, а затем на этой странице отображается «Не Ajax!»

Я предполагаю, что он выполняет действие HTML-формы по умолчанию, а не AJAX, поскольку они также не выводятся на консоль, которую я добавил, чтобы получить дополнительную информацию

Спасибо за всю вашу помощь. Пожалуйста, прокомментируйте, если мне нужно предоставить больше информации!

Комментарии:

1. Есть ли причина, по которой вы не заключили csrfmiddlewaretoken в кавычки?