全局变量Django的问题

mmvthczy  于 2022-11-26  发布在  Go
关注(0)|答案(1)|浏览(171)

我写了一个测试网站。我需要保存用户的答案。他们中的一些人有类似的用户名。这是我的开始功能

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

我怎样才能解决这个问题呢?

jk9hmnmh

jk9hmnmh1#

在这种情况下使用全局变量可能没有意义,您可以定义一个会话变量(cookie)。
编辑MIDDLEWARE设置并确保它包含django.contrib.sessions.middleware.SessionMiddleware

start函数

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

相关问题