Ajax POST метод для Джанго. Всегда приводит к "Не Ajax" - PullRequest
2 голосов
/ 01 апреля 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...