Проблемы с глобальной переменной Django

Я пишу сайт для викторины. И мне нужно сохранять ответы пользователей. Некоторые из них имеют похожее имя пользователя. Это моя начальная функция

global new_user_answer
user_group = request.user.groups.values_list()
university = user_group[0][1]
num = Answers.objects.all().count()
new_user_answer = num + 1
new_line = Answers(id=new_user_answer, id_user=user)
new_line.save()
return redirect(f'/1')

Здесь я создаю новую строку в моей БД. Вторая функция сохраняет ответы пользователя.

    data = Answers.objects.get(id=new_user_answer)
    setattr(data, question, answers)
    data.save()
    if int(id_questions) < 47:
        return redirect(f'/{int(id_questions) +1 }')
    else:
        return render(request, 'index.html')

Иногда у меня возникает ошибка 500

name new_user_answer is no define

Как я могу решить эту проблему?

Пожалуй, нет смысла использовать глобальную переменную таким образом. Вместо этого вы можете определить переменную сессии (cookie).

Отредактируйте параметр MIDDLEWARE и убедитесь, что он содержит django.contrib.sessions.middleware.SessionMiddleware.

#запуск функции

user_group = request.user.groups.values_list()
university = user_group[0][1]
num = Answers.objects.all().count()
request.session['new_user_answer'] = num + 1
new_line = Answers(id=request.session['new_user_answer'], id_user=user)
new_line.save()
return redirect(f'/1')

# Вторая функция

if 'new_user_answer' in request.session:
    data = Answers.objects.get(id=request.session['new_user_answer'])
    setattr(data, question, answers)
    data.save()
if int(id_questions) < 47:
    return redirect(f'/{int(id_questions) +1 }')
else:
    return render(request, 'index.html')

Дополнительная информация: https://docs.djangoproject.com/en/dev/topics/http/sessions/#session-object-guidelines

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