flask - Flask requests.args 在新的应用程序路由中保持变量
问题描述
我正在使用 request.args 获取变量。我想添加另一个应用程序路由以获取一个新变量,该变量将链接到应用程序路由“/search/”中的 client_id。添加另一个应用程序路由时如何保留此 client_id 变量?
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 模板中的内容,我需要在其中获取以前在 request.args['text'] 中的变量,并将其与新的表单数据一起发送到新的应用程序路由“/csv”:
无标题2.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_id
, session['client_id'] = request.args['query']
。你总是可以得到它session['client_id']
。此外,您必须像这样在应用程序的配置中设置密钥app.config['SECRET_KEY'] = 'My secret key'
。
在此处阅读有关会话的更多信息。
推荐阅读
- kubernetes - 每个命名空间的 Kubernetes 资源预留
- android - React Native 错误:找不到模块'jest-serializer'
- pandas - 重塑 Pearsonr 相关性
- sql - CASE 中的 PARTITION BY 不适用于多个 AND 语句
- r - 从多个矩阵中高效操作和提取数据 - 均值和日期
- python - 在密集的 Keras 层中绑定自动编码器权重
- android - 通过 Wireshark 实时捕获 Android 蓝牙流量
- bash - 从 awk 输出,如何剪切或修剪列中的字符
- python - python自定义函数中使用GEKKO变量的问题
- loops - 比较列表中的所有元素并获取匹配对的可变引用