Как передать полученный массив от функции к другой функции во Flask?

У меня есть приложение для фляги. В html-файле (fixtures.html) я получаю переменную от функции с именем fetchMatches(). Имя варибала - realData. Теперь я хочу передать эту полную переменную в действие под названием file, которое является placePred.

Это код функции, возвращающей шаблон html:

@app.route("/fetchMatches")
def fetchMatches():
    if g.user:
        dateBuild = []
        wb = xlrd.open_workbook('betDeNoBanter.xlsx')
        today = datetime.date.today()
        for sheet in wb.sheets():
            dates = sheet.col_values(0, 1)
            i=1
            for date in dates:
                date = datetime.datetime(*xlrd.xldate_as_tuple(date, wb.datemode)).date()
                #if (str(date) != str(today)):
                if date-today <= datetime.timedelta(0):
                    i = i+1
                    continue
                if date-today == datetime.timedelta(1):
                    entry = {"dateId":i, "date":str(date)}
                    row = i
                    teamOne = str(sheet.cell_value(row, 1))
                    teamTwo = str(sheet.cell_value(row, 2))
                    gameWeek = str(sheet.cell_value(row, 3))
                    dateInsert = str(date)
                    info = {"row":row, "date": dateInsert, "teamOne": teamOne, "teamTwo": teamTwo, "gameWeek": gameWeek}
                    dateBuild.append(info)
                    i = i+1
                    continue
                if date-today > datetime.timedelta(1):
                    i = i+1
                    continue
            if len(dateBuild) == 0:
                return "no match next day"
            else:
                return render_template("fixtures.html", realData=dateBuild)
    else:
        return redirect(url_for("login"))

Это шаблон

<table>
{% for data in realData %}
    <tr>
        <td>{{ data["row"] }}</td>
        <td>{{ data["teamOne"] }}</td>
        <td>{{ data["teamTwo"] }}</td>
        <td>{{ data["gameWeek"] }}</td>
        <td>id:</td>
        <td>{{ data["row"] }}</td>
    </tr>
{% endfor %}
</table>
    <div>
        If you enter +(number), it means pred is for team one to win, -(number) is for team two to win.
        <form action = "/placePred" method = "post">
            <input type = "number" name = "pred">
            <input type = "hidden" value = {{ realData }} name = "realData">
            <input type = "submit">
        </form>
    </div>

И это функция, в которой я хочу иметь переменную (массив):

@app.route("/placePred", methods = ["POST"])
def placePreds():
    if g.user:
        email = g.user
        number = request.form["pred"]
        idList = []
        idsAllowed = request.form["realData"]
        for id in idsAllowed:
            idList.append(id)
        return jsonify({'devices': idList})
        if not(number in idListid):
            return "Invalid bet"
        cursor = conn.cursor()
        query = "select * from bets where email = '" + str(email) + "' and sheet_id = '" + str(abs(int(number))) + "'"
        cursor.execute(query)
        if cursor.rowcount != 0:
            return "You havev already placed a bet on this fixture, fuck off!"
        if int(number) > 0:
            teamWin = 1
        elif int(number) < 0:
            teamWin = 2
        else:
            return redirect(url_for("login"))

        query = "insert into bets values(default, '" + str(email) + "', '" + str(teamWin) + "', 20, " + str(abs(int(number))) + ")"
        cursor.execute(query)
        conn.commit()
        return redirect(url_for("fetchMatches"))
    else:
        return redirect(url_for("login"))
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
85
1

Ответы 1

Вам нужно определить переменная маршрута, вот как это должно работать. Показываю только актуальные части:

placePreds() должен получать данные, поэтому вы определяете переменную:

@app.route("/placePred<data>", methods = ["POST"])
def placePreds(data):
    # do something with data here ...

В форме вы передаете реальные данные следующим образом:

<form action = "{{ url_for('placePreds', data=realData) }}" method = "post">

Спасибо, но он передается в виде строки. Любой способ принять его как массив или json?

Aviral Srivastava 03.04.2018 16:19

Это в форме диктовки? Просто введите его в dict.

Roman 03.04.2018 19:23

Другие вопросы по теме