【问题标题】:Cherrypy: Can't get my POST dataCherrypy:无法获取我的 POST 数据
【发布时间】:2011-04-25 16:33:45
【问题描述】:

我用 CherryPy 编写了一个小型 Web 应用程序。但我有一个问题 - 我无法获取我的 POST 数据,但 GET 没问题。托管在本地主机(Win 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)

这是我的 URL 开关。如果表单使用 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>

我猜不出哪里出了问题。我可以检查什么?

【问题讨论】:

    标签: python post get cherrypy


    【解决方案1】:

    尝试:

    <!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/”中的最后一个斜杠

    【讨论】:

    • 谢谢!非常好!如果最后的斜杠省略并丢失 POST 数据,CherryPy 与我的服务器设置生成重定向。我调整了服务器设置,但我认为最好用 / 完成 url。
    【解决方案2】:

    我不知道root.processform在CherryPy中是不是特别的东西,如果不是你需要暴露一个process_form页面

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

    我可能错过了什么

    【讨论】:

      猜你喜欢
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多