например, скажите, что у меня есть свой индексный модуль cherrypy, настроенный как это
>>> import cherrypy
>>> class test:
def index(self, var = None):
if var:
print var
else:
print "nothing"
index.exposed = True
>>> cherrypy.quickstart(test())
Если я отправляю, больше чем один ПОЛУЧАЕТ параметр, я получаю эту ошибку
404 не найденный
Неожиданные параметры строки запроса: var2
Traceback (новый вызов в последний раз):
Файл "C:\Python26\lib\site-packages\cherrypy_cprequest.py", строка 606, в отвечает cherrypy.response.body = self.handler () Файл "C:\Python26\lib\site-packages\cherrypy_cpdispatch.py", строка 27, в вызове test_callable_spec (self.callable, self.args, self.kwargs) Файл "C:\Python26\lib\site-packages\cherrypy_cpdispatch.py", строка 130, в test_callable_spec "параметры: %s" %", ".join (extra_qs_params)) HTTPError: (404, 'Неожиданные параметры строки запроса: var2')Приводимый в действие CherryPy 3.1.2
def index(self, var=None, **params):
или
def index(self, **params):
'var2' будет ключом в параметрах диктата. Во втором примере также будет 'var'.
Обратите внимание на другие ответы, которые ссылаются на синтаксис *args, в этом случае не сработают, так как CherryPy передает параметры запроса в качестве аргументов ключевых слов, а не позиционных аргументов. Следовательно, вам нужен синтаксис **.
.Для полной обобщённости изменение
def index(self, var = None):
-
def index(self, *vars):
vars
будет привязано к кортежу, который пуст, если не было передано ни одного аргумента, имеет один элемент, если был передан один аргумент, два, если два, и так далее. Тогда, конечно же, до вашего кода дело доходчиво и уместно рассматривать различные подобные случаи.