0

我正在使用此代码添加两个数字

import webapp2


class HomeHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write('This is the HomeHandler.')


class AddHandler(webapp2.RequestHandler):
    def get(self, num1, num2):
        num3 = int(num2)+int(num1)
        self.response.write('The sum of the numbers is- %d' % num3)


app = webapp2.WSGIApplication([
    webapp2.Route(r'/', handler=HomeHandler, name='home'),

    webapp2.Route(r'/add/<num1:\d+>/<num2:\d+>',
                  handler=AddHandler, name='add')

], debug=True, config=config)

# app.router.add((r'/add/<num1:\d+>/<num2:\d+>', handler=AddHandler, name='add'))

print(app)
# app = webapp2.WSGIApplication([
#     (r'/', HomeHandler),
#     (r'/products', ProductListHandler),
#     (r'/products/(\d+)', ProductHandler),
# ])


def main():
    from paste import httpserver
    httpserver.serve(app, host='127.0.0.1', port='8080')


if __name__ == '__main__':
    main()

我正在使用这个网址添加两个数字 http://127.0.0.1:8080/add/3/4

但我希望所有输入都在 single / ex- http://127.0.0.1:8080/divide/a=3&b=3之后

在接受输入后,我必须将它们转换为整数才能添加它们,这是否可以不进行转换?

请问这个怎么办?

4

1 回答 1

1

在接受输入后,我必须将它们转换为整数才能添加它们,这是否可以不进行转换?

首先,我强烈建议升级到 Python 3.X,因为 Python 2.X 已经到了生命的尽头。我建议切换到像Flask这样的库,因为webapp2 不支持 Python 3。

此外,Google Cloud 强烈建议按照此处所述升级您的 Google App Engine 应用:

Python 社区将于 2020 年 1 月 1 日停用 Python 2,并鼓励所有开发人员尽快升级到 Python 3。鉴于客户可能需要更多时间从 Python 2 迁移到 Python 3,Google Cloud 客户将能够在 2020 年 1 月 1 日之后运行 Python 2 应用并使用现有的 Python 2 客户端库。

就转换而言,似乎每次您想将整数传递到您的 URL 时都需要转换它。

您可以使用 Regex 之类的方法来解析来自 URL 的值,以检查它是否为数字

如果是这样,您可以将其解析为整数。

至于输入全部在斜线之后,您可以使用本文中提到的解决方案

因为它们是 Python 3 中的示例,不仅更高效,而且是经得起时间考验的,您可以在将 Python 2.X 应用程序升级到 Python 3.X 后立即使用它们。

无法在 python 2.7 中的 Webapp2 中接受多个输入?

是的,你实际上可以做到。我附上了一篇可能对您有帮助的帖子,其中举例说明了如何在 webapp2 中检索多个输入

我希望它有所帮助。

于 2020-01-03T10:11:53.003 回答