如何使用CGI实现Post / Redirect /获取使用Python

时间:2017-07-08 06:05:13

标签: python python-2.7 amazon-ec2 cgi

我最近开始使用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()

我明白并非所有这些都很重要,但是嘿,我是新手,而且我可能最好不要忽略任何事情。

0 个答案:

没有答案