Проблемы с глобальной переменной 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