我一直试图将值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'])
非常感谢任何有关如何传递此值的帮助。
答案 0 :(得分:1)
第一条路线不会拨打第二条路线,所以误导您说要通过"通过"数据。
听起来您希望第一条路线保存某处的数据,以及第二条途径读取数据。有几种方法可以执行此操作,例如将数据保存在普通文件或数据库中。但是,您必须担心其他用户可以看到一个用户的数据,因此最好将数据保存在会话中。
您还有另一个问题:由于两条路线之间没有直接联系,您如何确保同步?如果用户在没有访问第一条路线的情况下访问第二条路线该怎么办?
一种解决方案是修改你的第二条路线,因此它需要将数据作为参数传递,而不是依赖于最近可能访问或未访问的某些先前路由(或永远!)