我最近开始使用Python CGI制作Amazon Linux EC2 LAMP服务器。我制作了一个简单的脚本,将从文本框提交的名称存储到MySQL表中,并从任何其他浏览器显示它。我遇到了一个问题,我所在的浏览器要求在刷新时重新发送数据。例如,Firefox发送,
要显示此页面,Firefox必须发送重复之前执行的任何操作(例如搜索或订单确认)的信息。
我一直在寻找解决这个问题的方法,其中一个方法是使用Post / Redirect / Get设计模式。我还没有发现任何使用Python和CGI的例子,我对它的工作原理有点不知所措 - 但是,我认为在实现之后我会更好理解
以下是代码:
#!/usr/bin/python
print "Content-Type: text/html"
#print "Location: http://34.212.128.254/hellopython.py"
print """
<title>NameSample</title>
<form action="hellopython.py" method="post">
First Name:<br>
<input type="text" name="firstname" autocomplete="off"><br>
<input type="submit" value="Submit" autocomplete="off">
</form>
"""
import cgi
form = cgi.FieldStorage()
pastName = form.getvalue("firstname")
import MySQLdb
db = MySQLdb.connect(host="DEFINITELY_NOT_LOCALHOST", # your host, usually localhost
user="INSERT_USER", # your username
passwd="INSERT_PASSWORD", # your password
db="users") # name of the data base
cur = db.cursor()
if form.getvalue("firstname") != None:
cur.execute("truncate user")
cur.execute("INSERT INTO user VALUE('"+pastName+"',1)")
db.commit();
cur.execute("SELECT * FROM user")
for row in cur.fetchall():
print row[0]
db.close()
else:
cur.execute("SELECT * FROM user")
for row in cur.fetchall():
print row[0]
db.close()
我明白并非所有这些都很重要,但是嘿,我是新手,而且我可能最好不要忽略任何事情。