这是用Python CGI写的一个简单页面:
- Python code
#!/usr/bin/env python #coding=gbk import cgi form = cgi.FieldStorage() count = int(form.getvalue('index','-1')) result = '' alert = '' #从文件读取列表 infile = open('codelist.txt','r') lines = infile.readlines() infile.close() ##########以下是关键:点击按钮时条件才能为真。可是刷新网页(按F5)时条件也真,这是我不希望的############ if (form.getvalue('t','') != ''): if len(lines) == 0: alert = '列表中的号码已全部用完,请通知管理员添加新列表' else: count += 1 result = lines[0]#获取号码 lines.pop(0)#删除已获取出去的号码 #更新列表到文件 outfile = open('codelist.txt','w') lines2 = ''.join(lines) outfile.write(lines2) outfile.close() ####################################################################################################### print '''Content-type: text/html <html> <head> <title>获取授权码</title> </head> <body> <h1>授权码: %s</h1> <form action='index.cgi'> <input type='hidden' name="index" value="%s" /> <input type='submit' name="t" value="点击获取"/> <form/> <p>当前剩余:%s<p/> <h1>%s<h1/> </body> </html> ''' % (result,count,len(lines),alert)
如上,我本意用form.getvalue('t','') != ''判断是想用户在点击按钮t的时候才执行if代码块,可是我发现这个条件在刷新网页的时候也是不为空的,所以也真,也执行if代码块,但是我实在找不到别的判断条件!
我应该怎么处理这个问题?
------解决方案--------------------
1. 就具体问题来说,效果本来就不会变。你原来的写法不好,容易混淆问题。
2. form.getvalue('t')如果是None,你那个条件就不可能为真了。
3. 我说的是http post。
------解决方案--------------------