Flask request.args хранит переменную в новом маршруте приложения - PullRequest
0 голосов
/ 09 ноября 2018

Я получаю переменную, используя request.args. Я хотел бы добавить другой маршрут приложения, чтобы получить новую переменную, которая будет связываться с client_id в маршруте приложения '/ search /'. Как сохранить эту переменную 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" вместе с новыми данными формы:

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>

1 Ответ

0 голосов
/ 09 ноября 2018

Вы можете оставить переменную client_id, добавив ее в сеанс, сохранить в файле cookie или использовать g объект.

Для сессии просто используйте вместо client_id, session['client_id'] = request.args['query']. Вы всегда можете получить его с помощью session['client_id']. Кроме того, вы должны установить секретный ключ в конфигурации приложения, например, app.config['SECRET_KEY'] = 'My secret key'.

Подробнее о сессиях здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...