Flask requests.args在新的应用程序路由中保留变量



我正在使用request.args获取一个变量。我想添加另一个应用程序路由以获取一个新变量,该变量将链接到应用程序路由'/search/'中的client_id。在添加另一个应用程序路由时,如何保持这个clientid变量?

from flask import Flask
from flask import render_template, url_for, request, redirect
from flask import make_response
app = Flask(__name__)
import pandas as pd

@app.route('/', methods=['GET'])
def index():
res = '''<form action="/search" method=>
<p><input type="text" name="query" value="test"></p>
<p><input type="submit" value="Search"></p>
<br />
</form>'''
return res 
@app.route('/search', methods=["GET","POST"])
def suggestion():
client_id = request.args['query']  
return render_template('untitled2.html')

if __name__ == '__main__':
app.run(debug=True) 

例如,我想添加此应用程序路由

@app.route('/csv/')
def download_csv():
#can't figure out how to obtain the client_id var
client_id = ??? 
model_id=request.args['textid']
model_id1=request.args['textid1']
model_id2=request.args['textid2']
# return response
df=recommender.update_history(client_id, model_id, model_id1, model_id2)
df= recommender.get_csv()
resp = make_response(df.to_csv(encoding='iso-8859-1',index=False))
resp.headers["Content-Disposition"] = "attachment; filename=export.csv"
resp.headers["Content-Type"] = "text/csv"
return resp

以下是我在html模板上的内容,我需要获取以前请求中的变量。args['text'],并将其与新的表单数据一起发送到新的应用程序路由".csv":

untitled2.html:

<div class="form-group">
<h4>Suggestions for {{ request.args['text']  }}  </h4>
<form action ="/csv">
<form method="POST">
<br>
<label>Enter 3 suggestions</label>
<br>
<input name="textid", placeholder="Suggested Model ID #", value="{{ request.form['textid'] }}"/>
<input name="textid1", placeholder="Suggested Model ID #", value="{{ request.form['textid1'] }}"/>
<input name="textid2", placeholder="Suggested Model ID #", value="{{ request.form['textid2'] }}"/>
<input type="submit" >
</form>
</div>
<h4>Entered Suggestions:{{ request.form['textid'] }}  {{ request.form['textid1'] }}  {{ request.form['textid2'] }} </h4>

您可以保留client_id变量,将其添加到会话中,保存在cookie或使用g对象。

对于会话,只需使用而不是client_idsession['client_id'] = request.args['query']。你总是可以用session['client_id']得到它。此外,您必须在应用程序的配置中设置密钥,如app.config['SECRET_KEY'] = 'My secret key'

点击此处阅读更多关于会议的信息。

最新更新