Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 13, 2013 11:57:30

Nucky
Зарегистрирован: 2013-06-13
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при отправке метода POST к серверу

Доброго времени суток!

Вопрос заключается в следующем:

Читаю Марк Лутц - Программирование на Python, 4-е издание, I том и пробую оттуда пример с работой html страницы, а именно запуска файла по нажатии submit:

<html>
<title>Something</title>
<body>
<form method=POST action="m1.py">
	<P><B>Enter ur name:</B>
	<P><input type=text name=user>
	<P><input type=submit>
</form>
</body></html>

Сам файл m1.py(На самом деле в нем может быть что угодно, ошибка все равно возникает):

import cgi
form=cgi.FieldStorage()
print 'Content-type: text/html\n'
print '<title>Reply Page</title>'
if not 'user' in form:
    print '<h1>Who r u?</h1>'
else: print '<h1>Hello <i>{0}</i>! </h1>'.format(cgi.escape(form['user'].value))

Веб-сервер запускаю посредством самого Python(пример из книги):

import os, sys
from BaseHTTPServer import HTTPServer
from  CGIHTTPServer import CGIHTTPRequestHandler
webdir = 'C:\\Python27\\cgi'  # место, где находятся файлы html и подкаталог cgi-bin
port = 8080      # по умолчанию http://localhost/, иначе используйте
               # http://localhost:xxxx/
os.chdir(webdir)               # перейти в корневой каталог HTML
srvraddr = ("", port)          # имя хоста и номер порта
srvrobj = HTTPServer(srvraddr, CGIHTTPRequestHandler)
srvrobj.serve_forever()        # запустить как бесконечный фоновый процесс


При нажатии submit появляется ошибка:
Error response

Error code 501.

Message: Can only POST to CGI scripts.

Error code explanation: 501 = Server does not support this operation.


В книге пример этот пример описывается как рабочий и даже приложен скриншот.
Просьба подсказать почему появляется данная ошибка, ведь в самом файле указано method=POST action=“m1.py”
Пробовал запускать как на 2.7, так и на 3.3.

PS: В html не разбираюсь,не пинайте.

Отредактировано Nucky (Июнь 13, 2013 12:12:24)

Офлайн

#2 Июнь 13, 2013 12:15:16

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Ошибка при отправке метода POST к серверу

<form method="POST" action="m1.py">
А так?

Офлайн

#3 Июнь 13, 2013 12:20:18

Nucky
Зарегистрирован: 2013-06-13
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при отправке метода POST к серверу

Shaman
<form method=“POST” action=“m1.py”>

А так?
К сожалению нет,в книге без кавычек, кстати.

Отредактировано Nucky (Июнь 13, 2013 12:20:57)

Офлайн

#4 Июнь 13, 2013 13:26:42

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Ошибка при отправке метода POST к серверу

Nucky
в книге без кавычек, кстати
Кстати оно не работает в вашем случае. Попробуйте так же сменить регистр, браузер, ещё что-нибудь.

Офлайн

#5 Июнь 13, 2013 13:49:19

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Ошибка при отправке метода POST к серверу

У вас проблема с путями. CGIHTTPRequestHandler выполняет скрипты для метода POST только по путям ‘/cgi-bin’ и ‘/htbin’. Для

<form method="post" action="m1.py">
m1.py и html должны оба лежать в <корень сайта>+cgi-bin. Если хотите html в корне сайта, тогда надо
<form method="post" action="/cgi-bin/m1.py">
или унаследоваться от CGIHTTPRequestHandler и поставить в cgi_directories нужные пути, Вот подробности



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Июнь 13, 2013 15:10:52

Nucky
Зарегистрирован: 2013-06-13
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при отправке метода POST к серверу


PooH
У вас проблема с путями. CGIHTTPRequestHandler выполняет скрипты для метода POST только по путям ‘/cgi-bin’ и ‘/htbin’.

Поставил “/cgi-bin/m1.py” и заработало. Благодарю. Не знал что пути так жестко привязаны. Буду дальше учить матчасть.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version