Django - при перенаправлении на страницу отображается http-ответ (Json данные), а не рендеринг - PullRequest
0 голосов
/ 25 февраля 2020

Вопрос: Как лучше всего справиться с этим, чтобы ответ json не отображался, если пользователь перенаправляет таким образом? Или вернуть пользователя в состояние теста до того, как данные будут получены?

Немного неловко объяснить. Я создаю приложение для викторины, используя django. Пользователь может выбрать викторину для проведения, когда он выбирает, какую викторину он отправляет на следующую страницу: (Снимок экрана 1) Quiz Start

Когда тест начинается, ajax запрос отправляется на сервер, чтобы получить вопросы для викторины и показать их пользователю. Проблема в том, что если тест уже запущен, и я использую кнопку «Назад» в браузерах, а затем перезагружаю страницу, на которой отображается ответ json вместо (Снимок экрана 1):

Json Ответ :

Json

View.py

def active_quiz(request, quiz_pk):
    quiz = Quiz.objects.filter(pk=quiz_pk)

    questions = Questions.objects.filter(quiz=quiz_pk)

    if request.is_ajax():
        if request.method =="GET":
            serial = serializers.serialize("json", Questions.objects.filter(quiz=quiz_pk))

            response_data = serial
            return HttpResponse(response_data, content_type="application/json")

    args={'question': questions, 'quiz': quiz}
    return render(request, 'quiz/quiz_active.html', args

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Я знаю, что это, вероятно, не тот ответ, который вы ожидаете, но вы должны разделить свои представления и создать две разные конечные точки для API и цели рендеринга.

Также вы можете взять посмотрите на это?

request.is_ ajax () == True при нажатии кнопки назад?

0 голосов
/ 25 февраля 2020

Я бы предложил использовать JsonResponse вместо HttpResponse. Это будет go к вашему ajax.

return JsonResponse(json_object, safe=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...