Python CGI脚本 - 重定向并不总是有效

时间:2010-12-02 00:21:14

标签: python cgi

我正在为一个赋值(Python 2.4)编写一个小CGI脚本,它接受表单数据,用它运行一个shell命令,然后根据它刚刚做了什么来显示它自己页面的一个或另一个版本。例如。如果您添加注释,它会重新加载页面的“项目”版本,而不是“所有项目列表”视图,并包含新注释。程序中有几个地方应该重新加载自己。它在一个地方工作,在一个地方它不起作用,我正在挫败我的大脑试图看到差异。

if mode == "change":
    if newcomment != "":
        comment_command = "some shell command \"" + item + "\" " + comment
        os.system(comment_command)
    if rating != "":
        rate_command = "same command \"" + item + "\" " + rating
        os.system(rate_command)
 # this NEVER works!
    print "%s%s" % ("Location:http://blahblah/cgi-bin/myproject.cgi?item=", urllib.quote_plus(item)) 

elif mode == "newitem":
    add_command = "command \"" + newitem + "\""
    result = os.system(add_command)
    retcode = os.WEXITSTATUS(result)
    # redirect depending on results
    if retcode == 1:
        # this one always works!
        print "%s%s" % ("Location:http://blahblah/cgi-bin/myproject.cgi?item=", urllib.quote_plus(newitem))
    else:
        print("Location:http://blahblah/cgi-bin/myproject.cgi")

我希望这已经足够了。我不明白为什么它在一个地方而不是另一个地方工作。我认为除了?item= version在一个地方工作之外,它忽略了重定向和“超越”重定向的尝试。有什么关于os.system的东西,我不明白吗?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)