如何将查询变量从一个html页面传递到另一个页面?

时间:2016-12-07 18:35:21

标签: python api flask routes

我一直试图将值q传递给第二个@ app.route一段时间但是没有成功。

@app.route("/results")
def results():
    q = request.args.get('q')
    r = requests.get('http://api.yummly.com/v1/api/recipes?_app_id=MYAPPID&_app_key=MYAPPKEY&requirePictures=true&q= %s' % q)
    data = r.json()
    return render_template("results.html", recipename = data['matches'][0]['recipeName'])

@app.route("/recipe")
def recipe():
    r = requests.get('http://api.yummly.com/v1/api/recipes?_app_id=MYAPPID&_app_key=MYAPPKEY&requirePictures=true&q=  %s' % q)
    data = r.json()
    ID = data["matches"][0]['id']
    rr = requests.get('http://api.yummly.com/v1/api/recipe/%s?_app_id=dd85df7a&_app_key=0b187b4352ca796bc89a4600dfad0f06' % ID )
    rdata = rr.json()
    return render_template("recipe.html", url = rdata['attribution']['url'])

非常感谢任何有关如何传递此值的帮助。

1 个答案:

答案 0 :(得分:1)

第一条路线不会拨打第二条路线,所以误导您说要通过"通过"数据。

听起来您希望第一条路线保存某处的数据,以及第二条途径读取数据。有几种方法可以执行此操作,例如将数据保存在普通文件或数据库中。但是,您必须担心其他用户可以看到一个用户的数据,因此最好将数据保存在会话中。

您还有另一个问题:由于两条路线之间没有直接联系,您如何确保同步?如果用户在没有访问第一条路线的情况下访问第二条路线该怎么办?

一种解决方案是修改你的第二条路线,因此它需要将数据作为参数传递,而不是依赖于最近可能访问或未访问的某些先前路由(或永远!)