Извлечение переменных HTTP GET в Python - PullRequest
5 голосов
/ 09 марта 2011

Я пытаюсь настроить HTTP-сервер в скрипте Python. До сих пор я получил сервер для работы с кодом, аналогичным приведенному ниже, с здесь .

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        print("Just received a GET request")
        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()

        self.wfile.write('Hello world')

        return

    def log_request(self, code=None, size=None):
        print('Request')

    def log_message(self, format, *args):
        print('Message')

if __name__ == "__main__":
    try:
        server = HTTPServer(('localhost', 80), MyHandler)
        print('Started http server')
        server.serve_forever()
    except KeyboardInterrupt:
        print('^C received, shutting down server')
        server.socket.close()

Однако мне нужно получить переменные из запроса GET, поэтому, если запрашивается server.py?var1=hi, мне нужен код Python, чтобы поместить var1 в переменную Python и обработать его (например, напечатать его). Как бы я пошел по этому поводу? Это может быть простой вопрос для вас профессионалов Python, но этот начинающий Python не знает, что делать! Заранее спасибо!

Ответы [ 2 ]

6 голосов
/ 09 марта 2011

Импорт urlparse и делать:

def do_GET(self):
    qs = {}
    path = self.path
    if '?' in path:
        path, tmp = path.split('?', 1)
        qs = urlparse.parse_qs(tmp)
    print path, qs
5 голосов
/ 09 марта 2011

urlparse.parse_qs()

print urlparse.parse_qs(os.environ['QUERY_STRING'])

Или, если вы заботитесь о заказе или дубликатах, urlparse.parse_qsl().

Импорт в Python 3: from urllib.parse import urlparse

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