在我的html页面上,我有一个按钮,并显示一个数字。我想每次按下按钮时数字增加1。这是我到目前为止的代码,但对于某些代码它不起作用。
# In mypage.html
<form method='get' action='#'>
<input type="submit" value="add" name="add"/>
</form>
<h1>{{ p }}</h1>
# In the views.py file
p = 1
def mypage(request):
global p
my_dictionary = {
"p" : p,
}
if request.GET.get('add'):
p = p+1
my_dictionary = {
"p" : p,
}
return render(request, "mypage.html", my_dictionary)
答案 0 :(得分:2)
在每个请求上运行一个新的python脚本实例,这将导致您的全局变量不被保留。您应该将计数存储在数据库中,并在每个请求中调用该值。除了数据库之外还有其他选项,但仍然存在需要某种持久存储的基本思想。
或者,您可以让请求者跟踪计数并在请求中提供当前计数。然后,您将在请求中提供的值中添加一个。这将需要前端的一些额外代码来维持计数,即便如此,如果用户关闭浏览器,计数也将被重置。
正如dm03514指出的那样,你也可以使用这样的会话:
if 'p' in request.session:
request.session['p'] = request.session['p'] + 1
else:
request.session['p'] = 1
答案 1 :(得分:0)
p值需要跟踪请求。
有两种可能性
变量应该在所有用户之间共享吗?或者只是当前用户?
答案 2 :(得分:0)
如果有一个django运行实例,它应该可以工作(虽然它不是像其他人建议的那样推荐的方法)。
它似乎不起作用是因为您使用了action='#'
,当您的网址已经以#
结尾时,浏览器拒绝重新提交表单。相反,您可以使用以下模板:
<form method='get' action='.'>
<input type="submit" value="add" name="add"/>
</form>
<h1>{{ p }}</h1>