Ajax-запрос к Django возвращает 500 внутренних ошибок сервера

Яm pretty new in Django and I пытаюсь собрать данные с помощью Ajax. Кроме того, я хотел бы добавить, что яm trying to make and edit quiz app from tutorial(so I делаю это по учебнику, а не с нуля.

После нажатия на кнопку я получил ошибку

console.log('hello world quiz')
const url = window.location.href
console.log(url)

$.ajax({
    type: 'GET',
    url: `${url}data`,
    success:function(response){
        console.log(response)
    },
    error: function(error){
    console.log(error)
    }
})

Я вижу, что путь неправильный, он должен быть: http://127.0.0.1:8000/1/, not http://127.0.0.1:8000/1/data. Но изменение от:

url: `${url}data`,

to:

url: `${url}`,

не собирает информацию о количестве массивов и т.д.

У меня также есть ошибка из терминала:

Traceback (последний последний вызов): Файл "/home/ad/Documents/myvenv/lib/python3.8/site-packages/django/core/handlers/exception.py", строка 34, в inner response = get_response(request) Файл "/home/ad/Documents/myvenv/lib/python3.8/site-packages/django/core/handlers/base.py", строка 115, в _get_response response = self.process_exception_by_middleware(e, request) Файл "/home/ad/Documents/myvenv/lib/python3.8/site-packages/django/core/handlers/base.py", строка 113, в _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/ad/Documents/test01/src/quizes/views.py", line 20, in quiz_data_view для q в quiz.get_questions(): File "/home/ad/Documents/test01/src/quizes/models.py", line 22, in get_questions return self.question_set.all[:self.number_of_questions] TypeError: 'method' object is not subscriptable

.

Но я понятия не имею, что можно изменить в quizes/models.py:

from typing import Text
from django.shortcuts import render
from .models import Quiz
from django.views.generic import ListView
from django.http import JsonResponse
# Create your views here.

class QuizListView(ListView):
    model = Quiz 
    template_name = 'quizes/main.html'

def quiz_view(request, pk):
    quiz = Quiz.objects.get(pk=pk)
    return render(request, 'quizes/quiz.html', {'obj': quiz})
    

def quiz_data_view(request, pk):
    quiz = Quiz.objects.get(pk=pk)
    questions = []
    for q in quiz.get_questions():
        answers = []
        for a in q.get_answers():
            answers.append(a.text)
        questions.append({str(q): answers})
    return JsonResponse({
        'data': questions,
        'time': quiz.time,
    })

или quizes/views.py:

from typing import Text
from django.shortcuts import render
from .models import Quiz
from django.views.generic import ListView
from django.http import JsonResponse
# Create your views here.

class QuizListView(ListView):
    model = Quiz 
    template_name = 'quizes/main.html'

def quiz_view(request, pk):
    quiz = Quiz.objects.get(pk=pk)
    return render(request, 'quizes/quiz.html', {'obj': quiz})
    

def quiz_data_view(request, pk):
    quiz = Quiz.objects.get(pk=pk)
    questions = []
    for q in quiz.get_questions():
        answers = []
        for a in q.get_answers():
            answers.append(a.text)
        questions.append({str(q): answers})
    return JsonResponse({
        'data': questions,
        'time': quiz.time,
    })

Можете ли вы помочь мне с некоторыми идеями?

def get_questions(self):
        return self.question_set.all[:self.number_of_questions]

должно быть:

def get_questions(self):
        return self.question_set.all()[:self.number_of_questions]

И это работает.

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