Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 7, 2016 11:54:33

KsenZ
Зарегистрирован: 2016-11-07
Сообщения: 11
Репутация: +  1  -
Профиль   Отправить e-mail  

GET запрос в Python

Имеется простенькая форма, и скрипт, который обрабатывает данные от этой формы.
Форма:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Форма</title>
</head>
<body>
<form action="cgi-bin/script.py" method="get">
    <table cellpadding="4">
        <tr>
            <td>Номер:</td>
            <td><input type="text" name="oid">
            </td>
        </tr>
    </table>
    <input type="submit">
</form>
</body>
</html>
Скрипт:
 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cgi
form = cgi.FieldStorage()
if "oid" not in form:
    print("<H1>Error</H1>")
else:
    print(form["oid"].value)

Т.е. когда скрипту передается GET запрос вида script.py?oid=123 скрипт, должен вывести значение oid, но этого не происходит. Вот, что показывает лог сервера (сервер запущен так: python3 -m http.server –cgi):
127.0.0.1 - - [07/Nov/2016 10:44:40] "GET /forma.html HTTP/1.1" 200 -
127.0.0.1 - - [07/Nov/2016 10:44:43] "GET /cgi-bin/script.py?oid=1234 HTTP/1.1" 200 -
127.0.0.1 - - [07/Nov/2016 10:44:43] command: "C:\Program Files\Python35\python.exe" -u C:\Users\...\...\cgi-bin\script.py
127.0.0.1 - - [07/Nov/2016 10:44:44] CGI script exited OK

Но при этом, я не получаю вывода “1234”.
Где у меня ошибка?

Отредактировано KsenZ (Ноя. 7, 2016 11:57:22)

Офлайн

#2 Ноя. 7, 2016 14:08:06

frombrest
От: Брест, Беларусь
Зарегистрирован: 2016-11-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

GET запрос в Python

Попробуй использовать метод:

 FieldStorage.getlist(name)

А вообще посмотри примеры которые напечатаны тут:

https://docs.python.org/3.5/library/cgi.html

Офлайн

#3 Ноя. 7, 2016 14:19:52

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

GET запрос в Python

Добавьте перед form:

 print("Content-Type: text/plain\n")

Тогда на ваш запрос “GET /cgi-bin/script.py?oid=1234 HTTP/1.1” будет возвращаться 1234.

Исполнимый ли script.py? Если нет, то:
 chmod +x script.py

Офлайн

#4 Ноя. 7, 2016 15:08:25

KsenZ
Зарегистрирован: 2016-11-07
Сообщения: 11
Репутация: +  1  -
Профиль   Отправить e-mail  

GET запрос в Python

scidam
Добавьте перед form:
Спасибо большое.
Дело было именно в этом.
Да script.py исполняемый.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version