Python Flask: url_for для передачи переменной в функцию из шаблона формы - PullRequest
0 голосов
/ 25 августа 2018

Я попробовал этот подход, чтобы передать входную переменную формы в функцию через метод url_for.Но это не работает.Кто-нибудь может проверить и сообщить мне, что не так в этом коде.

Функция:

@app.route('/report_data/<year>/<week>', methods = ['POST'])
def report_data(year,week):
  print year
  print woy

HTML-код:

 <html>
<body>
   <form action="{{  url_for('report_data', year=n_year, week=n_woy) }}" method="post">
        <h3> Enter the details  </h3>
        Year :
        <input type="text" name="n_year"> <br>
        <br>
        Week :
        <input type="text" name="n_woy"> <br>
        <br>
        <input type="submit" value="Submit"> <br>
        </form>
        </body>
        </html>

Проблема: получение «Нет» для обеих переменных.

1 Ответ

0 голосов
/ 25 августа 2018

Во-первых, как вы предоставляете значения года, недели, прежде чем отправлять их в свой HTML-код?Вы представили шаблон HTML в вашей функции?Если нет, то как ваша функция фляги узнает, что вы искали из этой конкретной формы?

Если это код вашего приложения Flask -

from flask import Flask, render_template, request
app = Flask(__name__)

@app.route('/report_data', methods = ['POST', 'GET'])
def report_data():
    if request.method == 'POST':
        result = request.form
        query_year = result['n_year'].encode('ascii', 'ignore')
        query_week = result['n_woy'].encode('ascii', 'ignore')
        print(query_year, query_week)
    return render_template('so_test.html')

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

И открыл URL -

http://127.0.0.1:5000/report_data

И я получаю эту картину.enter image description here

После публикации данных я вижу их в консоли приложения Flask.

('2018', '08')

...