Как решить эту проблему в моем веб-приложении Guess The Flag Django

Я совсем новичок в Django и пытаюсь создать с его помощью веб-игру "Угадай флаг".
На главной странице, когда кто-то нажимает кнопку "играть", он отправляется на страницу, где генерируется список из 4 случайно выбранных стран из БД, и только одна из этих 4 стран является фактическим ответом.

Вот код из views.py в моей директории App :

context = {}
context['submit'] = None
context['countries_list'] = None
score = []
score.clear()
context['score'] = 0

def play(request):

   len_score = len(score)
   countries = Country.objects.all()
   real_choice = None   

   if request.POST:
       get_guess = request.POST.get('guess')
       print(request.POST)
       
       if str(get_guess).casefold() == str(context['submit']).casefold():
           score.append(1)
       else:
           score.clear()
       len_score = len(score)
   choices = random.sample(tuple(countries),4)
   real_choice = random.choice(choices)

   context['countries_list'] = choices
   context['submit'] = real_choice
   context['score'] = len_score

   return render (request, 'base/play.html', context)

Все работает как ожидалось, когда играет только один человек, или сайт открыт только в одной вкладке.

Проблема в том, что если кто-то еще открывает сайт или он открыт более чем в одной вкладке, счет обнуляется и генерируется новый список случайных стран для всех пользователей, так что ваша угаданная страна никогда не будет правильной!

Как мне решить эту проблему? Опять же, я совсем новичок в этом, так что я остался в неведении.

Лучшим способом хранения краткосрочной информации о каждом пользователе являются переменные сеанса . Таким образом, вы можете поддерживать индивидуальные настройки пользователя. Например, что-то вроде:

def play(request):

   len_score = len(score)
   countries = Country.objects.all()
   real_choice = None   

   if request.POST:
       get_guess = request.POST.get('guess')
       print(request.POST)
       
       #Compare guess to session variable 
       #(using .get() which returns none rather than error if variable not found)
       if str(get_guess).casefold() == str(request.session.get('real_choice').casefold():
           score.append(1)
       else:
           score.clear()
       len_score = len(score)
   choices = random.sample(tuple(countries),4)
   real_choice = random.choice(choices)
   #Store answer in session variable
   request.session['real_choice'] = real_choice

   context['countries_list'] = choices
   context['submit'] = real_choice
   context['score'] = len_score

   return render (request, 'base/play.html', context)
Вернуться на верх