Найти - Пользователи
Полная версия: Ошибка при отправке метода POST к серверу
Начало » Python для новичков » Ошибка при отправке метода POST к серверу
1
Nucky
Доброго времени суток!

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

Читаю Марк Лутц - Программирование на 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 не разбираюсь,не пинайте.
Shaman
<form method="POST" action="m1.py">
А так?
Nucky
Shaman
<form method=“POST” action=“m1.py”>

А так?
К сожалению нет,в книге без кавычек, кстати.
Shaman
Nucky
в книге без кавычек, кстати
Кстати оно не работает в вашем случае. Попробуйте так же сменить регистр, браузер, ещё что-нибудь.
PooH
У вас проблема с путями. 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 нужные пути, Вот подробности
Nucky

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

Поставил “/cgi-bin/m1.py” и заработало. Благодарю. Не знал что пути так жестко привязаны. Буду дальше учить матчасть.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB