【问题标题】:Python cannot get url paramsPython 无法获取 url 参数
【发布时间】:2014-11-06 19:50:44
【问题描述】:

我想获取用户提交表单时发送回服务器的 url 参数。但是我收到此错误AttributeError: 'HTTPServerRequest' object has no attribute 'get'

我的网址是http://127.0.0.1:8000/reset?key=0OeKkQcSRXiy6yAvtgd9GGv4DhO1t0EYuybjHG5Buzo=

url 字符串被创建为:

keyVal=base64.b64encode(uuid.uuid4().bytes + uuid.uuid4().bytes)
emailLink = 'http://127.0.0.1:8000/reset?key=%s'%keyVal

emailLink 用作链接。

我尝试在上述网址中检索参数key 的值:

class ResetPwdHandler(tornado.web.RequestHandler):       
    def get(self):
        self.render("reset.html")

    def post(self):
        value = self.request.get('key')
        print value

我使用self.get_argument() 很好地收到了其他表单数据,如果我在这里尝试使用它,那么它会说'key' is missing argument。

我看到了使用 urlparse 的示例,但是在提交表单时如何使用它来获取 url 的参数。

【问题讨论】:

  • 也许上下文对其他用户来说是显而易见的,但是你能显示完整的类定义吗?错误是'HTTPServerRequest'对象没有属性'get',但是request在哪里设置,它的类在哪里定义?
  • 我已经编辑了问题以供全班同学使用
  • 这是什么框架? BaseHandler 来自哪里?
  • 这是 Tornado 框架
  • selfrequest 分配在哪里? get 定义在哪里?

标签: python python-2.7 url tornado urlparse


【解决方案1】:

我从未使用过 Tornado 或其 Web 框架,但 documentation 很清楚请求类没有定义 get 方法。您可能会将其与 Flask 或 webapp2 混淆。看来您可以使用self.request.arguments['key']self.get_arguments('key')

【讨论】:

  • 谢谢;是的,我也必须使用self.get_arguments('key'),我在def post 中错误地使用了它而不是def post
猜你喜欢
  • 2014-06-13
  • 1970-01-01
  • 2017-10-06
  • 2017-10-15
  • 2021-05-18
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
相关资源
最近更新 更多