Как я могу вынудить cherrypy признать, что переменное количество ПОЛУЧАЕТ параметры?

например, скажите, что у меня есть свой индексный модуль 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

15
задан tehryan 3 January 2010 в 01:33
поделиться

2 ответа

def index(self, var=None, **params):

или

def index(self, **params):

'var2' будет ключом в параметрах диктата. Во втором примере также будет 'var'.

Обратите внимание на другие ответы, которые ссылаются на синтаксис *args, в этом случае не сработают, так как CherryPy передает параметры запроса в качестве аргументов ключевых слов, а не позиционных аргументов. Следовательно, вам нужен синтаксис **.

.
35
ответ дан 1 December 2019 в 01:23
поделиться

Для полной обобщённости изменение

    def index(self, var = None):

-

    def index(self, *vars):

vars будет привязано к кортежу, который пуст, если не было передано ни одного аргумента, имеет один элемент, если был передан один аргумент, два, если два, и так далее. Тогда, конечно же, до вашего кода дело доходчиво и уместно рассматривать различные подобные случаи.

.
1
ответ дан 1 December 2019 в 01:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: