2013-09-08 1 views
1

Я пытаюсь получить запрос и данные (GET Params и POST Params) из запросаPython CherryPy, получить query_string разобран

curl --data "foo=bar&hello=world" "http://localhost:8080/mypath?orange=5&apple=8" 

.

query_string = cherrypy.request.query_string # 'orange=5&apple=8' 
post_data = cherrypy.request.body.params # {'foo': 'bar', 'hello': 'world'} 

правильно ДИКТ сформирован post_data. Как я могу разобрать query_string, как post_data?

Я читал в CherryPy документ, и я видел это:

process_query_string()

Parse the query string into Python structures. (Core)

Но это не работает, cherrypy.request.process_query_string() САИ возвращение None

Любые идеи?

+0

Cherrypy будет назначать параметры запроса в качестве аргументов функции. Функция, подобная 'mypath (orange = None, apple = None)' будет иметь строку запроса, обработанную для вас – user2722968

+0

Я использую @ cherrypy.expose def default (self, * args, ** kwargs): can i доступ к параметрам? – fj123x

+0

, если вы придерживаетесь kwargs: 'kwargs ['orange']' – user2722968

ответ

3

CherryPy использует cherrypy.lib.httputil.parse_query_string для заполнения Request.Params с параметрами GET, вы можете использовать его как это:

from cherrypy.lib.httputil import parse_query_string 
parse_query_string(cherrypy.request.query_string) 

Что возвращает dict с параметрами строки запроса.

0

запроса = urllib.parse.parse_qs (cherrypy.request.query_string, True)