在我的html页面上,我有一个按钮和一个显示的数字。我希望每按一次按钮,数字就增加1。这是我目前为止的代码,但对一些人来说,它不起作用。
mypage.html
<form method='get' action='#'>
<input type="submit" value="add" name="add"/>
</form>
<h1>{{ p }}</h1>
views.py
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)
3条答案
按热度按时间mmvthczy1#
在每次请求时,都会运行一个新的python脚本示例,这会导致全局变量不被保留。您应该将计数存储在数据库中,并在每次请求时调用该值。除了数据库之外,还有其他选项,但需要某种持久存储的基本思想仍然存在。
或者,您可以让要求者追踪计数,并在要求中提供目前的计数。然后,您会将要求中提供的值加1。这将需要前端的一些额外程式码来维护计数,即使如此,如果使用者关闭浏览器,计数也会重设。
正如dm03514所指出的,你也可以这样使用会话:
tez616oj2#
需要在请求之间跟踪p值。
两种可能性是
该变量应该在所有用户之间共享?还是只在当前用户之间共享?
5vf7fwbs3#
如果只有一个django示例在运行,它应该可以工作(虽然这不是像其他人建议的那样推荐的方法)。它似乎不工作是因为您使用了
action='#'
,当您的URL已经以#
结尾时,浏览器拒绝重新提交表单。相反,您可以使用以下模板: