视图中的Django变量增量

2024-06-28 20:20:24 发布

您现在位置:Python中文网/ 问答频道 /正文

抱歉,如果这是一个愚蠢的问题,但我是新来的Django和不知道什么是错的。在

我想显示一行接一行的数据库,这应该改变后,按一个按钮。其目的是翻译词汇并检查是否正确。在

这是我的观点:

counter = 3
def learn(request):
    obj = Vokabel.objects.filter(pk=counter)
    if request.method == "POST":
        form=addE(request.POST)
        if form.is_valid():
            temp1 = request.POST.get('elearn')
            for i in obj:
                if temp1 == i.eVok:
                    counter = counter + 1
                    return HttpResponseRedirect('/learnnext/')
                else:       
                    return HttpResponseRedirect('/learn/')
    else:
        form = addE()
        return render(request, 'learn.html', {'form' : form, 'obj' : obj})

我的表格:

^{pr2}$

但是这会返回以下错误:

^{3}$

Tags: djangoform数据库objreturnifrequestcounter
1条回答
网友
1楼 · 发布于 2024-06-28 20:20:24

由于没有指定要使用全局变量counter,因此出现了错误,因此从解析器的角度来看,您试图在为其赋值之前使用局部变量计数器的值。查找global关键字以了解更多信息。但这不是重点。在

Django不是一个连续的过程。把Django代码看作是一个持续运行的程序,这似乎是一种常见的误解。不是的。Django应用程序生命周期介于收到请求和发送响应之间。你不能真的依赖你的反变量保持不变。根据您的特定限制,有几种方法可以处理此问题。如果希望每个用户都有自己的计数器,可以使用sessions并将counter设置为会话键(这里是一个doc link)。如果希望计数器在所有用户会话中都是全局的,那么可以使用缓存API来存储和更新其值(同样,相关的doc link)。在

相关问题 更多 >