Cherrypy:无法获取我的POST数据

3 投票
2 回答
5074 浏览
提问于 2025-04-16 16:23

我写了一个小的网页应用,使用的是CherryPy框架。但是我遇到了一个问题——我无法获取POST请求的数据,而GET请求的数据可以正常获取。我是在本地(Windows 7)上运行的,用Opera 10浏览器查看,使用的是CherryPy自带的服务器。

这里有一些代码:

class Expose:
def __init__(self, fn):
    self.fn = fn

@cherrypy.expose()
def index(self, login=None):
    print 'LOGIN: ' + str(login)
    return self.fn(login=login)

import auth
root.process_form = Expose(auth.process_form)

这是我的网址切换部分。如果表单使用POST请求,LOGIN会打印出None,而如果是GET请求则会打印出正确的值。这里是我的表单(模板):

<!DOCTYPE html>

<body>
<p>Create new user</p>

<form action="/process_form" method="post">
  <input type="text" name="login" value="login" />
  <input type="text" name="email" value="me@company.com" />
  <input type="text" name="password" value="123" />
  <input type="submit" />
</form>

</body>

我不知道哪里出了问题。我应该检查什么呢?

2 个回答

-1

我不知道root.processform在CherryPy中是不是有什么特别的意思,如果没有的话,你需要提供一个处理表单的页面。

@cherrypy.expose()
def process_form(self, email, login,password):
    ...stuff...

我可能漏掉了什么。

6

试试这个:

<!DOCTYPE html>

<body>
<p>Create new user</p>

<form action="/process_form/" method="post">
  <input type="text" name="login" value="login" />
  <input type="text" name="email" value="me@company.com" />
  <input type="text" name="password" value="123" />
  <input type="submit" />
</form>

</body>

注意最后的斜杠在 "/process_form/" 后面。

撰写回答