【问题标题】:How to send multiple parameters to route using flask?如何使用烧瓶将多个参数发送到路由?
【发布时间】:2018-12-16 07:37:49
【问题描述】:

最近开始学习Flask框架,做了一个小程序来理解flask中的request/response循环。

我的问题是最后一个名为 calc 的方法不起作用。

我发送请求为:

http://127.0.0.1/math/calculate/7/6

我得到错误:

未找到: 在服务器上找不到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。”

下面是我的烧瓶应用代码:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return "<h1>Hello, World!</h1>"

@app.route('/user/<name>')
def user(name):
    return '<h1>Hello, {0}!</h1>'.format(name)

@app.route('/math/calculate/<string:var1>/<int:var2>')
def calc(var1, var2):
    return  '<h1>Result: {0}!</h1>'.format(int(var1)+int(var2))

if __name__ == '__main__':
      app.run(host='0.0.0.0', port=80, debug=True)

【问题讨论】:

  • 你为什么要抓取 var1 作为字符串?你用 试过了吗?
  • 以下对我有用:@app.route('/math/calculate//') def calculate(var1,var2): return '结果 %s' % str(var1+var2)
  • @DavidScottIV 谢谢伙计,它正在工作。但我的真正意图是:127.0.0.1:8081/math/calculate/?var1=4&var2=5 我该怎么做?

标签: python rest flask restful-url flask-restful


【解决方案1】:

要访问评论中描述的请求参数,您可以使用请求库:

from flask import request

@app.route('/math/calculate/')
def calc():
    var1 = request.args.get('var1',1,type=int)
    var2 = request.args.get('var2',1,type=int)
    return '<h1>Result: %s</h1>' % str(var1+var2)

此方法的文档记录在此处:

http://flask.pocoo.org/docs/1.0/api/#flask.Request.args

从request.args中提取key值的get方法原型为:

get(key, default=none, type=none)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-14
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    相关资源
    最近更新 更多