Я пишу небольшой CGI-скрипт для назначения (Python 2.4), который принимает данные формы, запускает команду оболочки с ними, а затем отображает ту или иную версию своей собственной страницы в зависимости от того, что он только что сделал.Например, если вы добавляете комментарий, он перезагружает версию страницы «элемент», а не представление «список всех элементов», включая новый комментарий.В программе есть несколько мест, где она должна перезагрузить себя.В одном месте это работает, а в одном - нет, и я ломаю голову, пытаясь увидеть разницу.
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 есть что-то, чего я не понимаю?