2014-09-11 5 views
-1

Я хочу знать, как показать запросы ($_GET) на скрипте python?

Обратите внимание, что я использую mod_python в качестве базового веб-сервера, работающего с apache2 на сервере UBUNTU.

Если у вас есть какие-либо идеи ваша помощь будет очень ценится :)

Другие питон веб-сервер, как Джанго и т.д ... примечание необходимо в моем случае, потому что я бегу только один питон скрипт для конкретной задачи :)

+2

Вы используете какие-либо веб-рамки или вы пьете из WSGI шланга напрямую? –

+0

Нет, я не использую фреймворк :) Основной веб-сервер python :) – user3818090

+3

Тогда начните использовать его сейчас. Существует мало причин оставаться на этом низком уровне. Выберите один из https://wiki.python.org/moin/WebFrameworks, хотя Flask, Pyramid и Django наиболее популярны прямо сейчас в зависимости от ваших потребностей. –

ответ

2

Для простого сценария для ответа на веб-запрос я не использовал mod_python; вы, вероятно, захотите перейти на mod_wsgi вместо этого.

Вы должны самостоятельно проанализировать переменную WSGI 10; Вы можете сделать это с urlparse.parse_qs() function:

from urlparse import parse_qs 

def application(environ, start_response): 
    params = parse_qs(environ['QUERY_STRING']) 
    foo = params.get('foo', [None])[0] 

parse_qs разбирает из строки запроса и устанавливает значение в результирующем словаре в список за ключ, потому что ключи могут происходить несколько раз в строке запроса.

Вышеуказанное выберет первое значение в списке, или None, если ключа нет вообще.

Если вы собираетесь придерживаться простого ванильного WSGI, прочитайте decent tutorial, чтобы понять, как это работает. Однако я настоятельно рекомендую вам использовать структуру; даже просто Werkzeug может сделать вашу жизнь как разработчика намного проще, даже для простого скрипта.

Если вы собираетесь придерживаться обработчика в mod_python запроса, замените environ['QUERY_STRING'] с request.args():

from urlparse import parse_qs 

def requesthandler(req): 
    params = parse_qs(req.args) 
    foo = params.get('foo', [None])[0] 
+0

Спасибо, и как вызвать 'def application' 'foo' из внешней строки? – user3818090

+1

@ user3818090: ick, вы используете 'mod_python', а не' mod_wsgi'. Это довольно древние и устаревшие в эти дни. –

+0

Я только что установил 'mod_wsgi', как вы мне предложили! – user3818090

Смежные вопросы