Перенаправление веб-страницы на главную страницу с CGI Python - PullRequest
5 голосов
/ 25 мая 2011

В качестве моего первого веб-приложения я разработал очень простой опрос. Случайные вопросы задаются пользователем каждый раз, когда страница обновляется. Ответ отправляется в сценарий cgi с помощью post для сохранения ответов в базе данных.

Однако, когда пользователь нажимает кнопку отправки, он автоматически переходит на страницу, которая отвечает за обработку данных, и, поскольку у него нет вывода, это пустая страница. Теперь, если пользователь хочет ответить на другой вопрос, он должен нажать «назад» в браузере и обновить страницу, чтобы появился новый вопрос. Я не хочу этого.

Я хочу, чтобы, когда пользователи нажимали «Отправить», ответы автоматически отправлялись в сценарий обработки, и страница обновлялась с новым вопросом или, по крайней мере, после обработки перенаправляла на главную страницу опроса с новым вопросом.

Ответы [ 3 ]

7 голосов
/ 25 мая 2011

Вы также можете отправить HTTP-заголовок из скрипта обработки:

Location: /

После того, как вы обработаете свой ответ, вы отправите вышеуказанный заголовок. Я бы порекомендовал вам добавить строку запроса случайного числа. например Пример Python (при условии, что вы используете модуль Python CGI):

#!/usr/bin/env python
import cgitb
import random
import YourFormProcessor

cgitb.enable() # Will catch tracebacks and errors for you. Comment it out if you no-longer need it.

if __name__ == '__main__':
  YourFormProcessor.Process_Form() # This is your logic to process the form.

  redirectURL = "/?r=%s" % random.randint(0,100000000)

  print 'Content-Type: text/html'
  print 'Location: %s' % redirectURL
  print # HTTP says you have to have a blank line between headers and content
  print '<html>'
  print '  <head>'
  print '    <meta http-equiv="refresh" content="0;url=%s" />' % redirectURL
  print '    <title>You are going to be redirected</title>'
  print '  </head>' 
  print '  <body>'
  print '    Redirecting... <a href="%s">Click here if you are not redirected</a>' % redirectURL
  print '  </body>'
  print '</html>'
6 голосов
/ 27 мая 2011

Вы хотите реализовать это: https://en.wikipedia.org/wiki/Post/Redirect/Get

Это намного проще, чем кажется. Сценарий CGI, который получает POST, должен просто произвести следующий вывод:

Status: 303 See other
Location: http://lalala.com/themainpage
0 голосов
/ 25 мая 2011
<html> 
  <head> 
    <meta http-equiv="refresh" content="0;url=http://www.example.com" /> 
    <title>You are going to be redirected</title> 
  </head> 
  <body> 
    Redirecting...
  </body> 
</html>

См. meta-refresh недостатки и альтернативы здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...