Можно ли отправлять переменные на индексную страницу в CherryPy?

Например, я хочу посетить http://localhost:8080/?var=val или аналогичный с помощью POST, но получаю ошибку сервера 500:

внутренняя ошибка сервера 500

Сервер столкнулся с непредвиденной ситуацией, из-за которой он не смог выполнить запрос.

Traceback (most recent call last):
 File "c:\python26\lib\site-packages\cherrypy\_cprequest.py", line 606, in respond
   cherrypy.response.body = self.handler()
 File "c:\python26\lib\site-packages\cherrypy\_cpdispatch.py", line 25, in __call__
   return self.callable(*self.args, **self.kwargs)
TypeError: index() takes no arguments (1 given)

Работает на CherryPy 3.1.2


person tehryan    schedule 03.01.2010    source источник
comment
Итак, как вы написали свою функцию index? В сообщении об ошибке говорится, что вы не разрешили ему принимать какие-либо аргументы, но он получил один (index предположительно является функцией, обслуживающей корневой URL-адрес, по аналогии с файлом index.html, который обычно извлекается для обслуживания корневого URL-адреса для статических запросов).   -  person Alex Martelli    schedule 03.01.2010
comment
Я понял, что я делал неправильно, была логическая ошибка, которую я ошибочно приписал своему собственному непониманию библиотеки cherrypy.   -  person tehryan    schedule 03.01.2010
comment
@tehryan Привет, вы можете поделиться тем, как вы решили проблему в ответе, тогда другие люди, у которых есть такая же проблема, увидят, как ее решить :)   -  person culix    schedule 20.08.2013


Ответы (1)


Это определенно возможно.

Вот пример (взято из руководства по CherryPy):

<form action="indexPostHandler" method="post">
    <p>Enter a value:</p>
    <input type="text" name="val" value=""/>
    <p><input type="submit" value="Login"/></p>
</form>

И в вашем индексе вы можете использовать что-то вроде следующего для обработки запроса:

class Root:
    # create form here
    def indexPostHandler(self, val=None):
        # do something with val here
        ...
person mechanical_meat    schedule 03.01.2010