Взятие данных из выпадающего меню с помощью колбы - PullRequest
0 голосов
/ 21 сентября 2018

Я совершенно новичок в колбе, и действительно совершенно заблудился, как к этому приблизиться.Я изучил другие вопросы SO, но я не могу заставить это работать независимо.

У меня есть такая форма:

<form class="teamSelection" method="POST" action="/submitted">  
   <select class="teamForm" id="teamDropdownSelector" type="text" name="teamDropdown" placeholder="Select A Team">
        <option disabled selected>Select a game</option>
        <option id="WatfordVSManchester Utd" value="">Watford VS Manchester Utd</option>
   </select>
   <input class="btn" type="submit" value="submit">
</form>

и моя фляга как есть:

from flask import Flask
app = Flask(__name__)

@app.route("/submitted")
def hello():
    return "hello world"

Цель состоит в том, чтобы взять содержимое выбранного / отправленного раскрывающегося спискапункт, передайте это в файл фляги, где я затем использую имена команд, чтобы собрать информацию о матче.Однако в настоящий момент я даже не могу заставить POST формы работать, и я в полной растерянности.Я ценю, что это довольно расплывчатый и открытый вопрос, но я серьезно не знаю, как еще понять это.

Должен ли я вместо этого использовать jquery для определения, когда выпадающий список изменился, и использовать AJAX для отправки POST, чтобы как-то вызвать скрипт и передать в него значения?

Любая помощь будет принята с благодарностью.


РЕДАКТИРОВАТЬ
Я думал, что поставил это в оригинальном сообщении, но, должно быть, забыл.
В настоящее время я использую локальный сервер apache и работаю с флешкой через pycharm.Все, что я сделал на данный момент, это установил пакет flask в pycharm, и не установил ничего из этого, как я видел в некоторых уроках при работе из командной строки.Я предположил, что в этом шаге нет необходимости, так как у меня уже есть сервер, работающий с Apache?
Когда дело доходит до таких вещей, как это, я действительно понятия не имею, поэтому извиняюсь, если это глупое предположение.

Я изменил колбу на:

from flask import Flask
app = Flask(__name__)

@app.route("/submitted", methods=['POST'])
def hello():
    with open("newTest.csv", mode="w+") as file:
        fileWriter = csv.writer(file)
        fileWriter.writerow(['Time', 'HomeTeam', 'AwayTeam'])
    file.close()

Причина в том, что я могу видеть, действительно ли этот скрипт вызывается, если он создаст новый CSV-файл с именем newTest,После запуска веб-страницы и отправки новый файл csv не появляется, поэтому этот сценарий не запускается, то есть, скорее всего, это из-за того, что я неправильно настроил флешку? / Предположение, что apache было достаточно, было неверным?

Ответы [ 3 ]

0 голосов
/ 21 сентября 2018

Вы просто должны указать способу колбы принять запрос POST и прочитать параметры из запроса

Пример:

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

@app.route("/submitted", methods=['POST'])
def hello():
   myvariable = request.form.get("teamDropdown")
   ... your code ...
   return "hello world"
0 голосов
/ 21 сентября 2018

Итак, ваш вопрос не о flask, а о fopen - вам нужно добавить полный путь к файлу, включая путь к каталогу script_dir = path.dirname(path.abspath(__file__)).

Скрипт Flask (изменен для запуска на моем локальном компьютере).копия проекта):

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

script_dir = path.dirname(path.abspath(__file__))

@app.route ("/")
def index():
    return render_template("index.html") 

@app.route("/submitted", methods=["GET", "POST"])
def hello():
    if request.method == "GET":
        return render_template("index.html") 
    filefullpath = script_dir + '//newTest.csv'
    with open(filefullpath, mode="w+") as file:
        fileWriter = csv.writer(file)
        fileWriter.writerow(['Time', 'HomeTeam', 'AwayTeam'])
    file.close()
    return "hello world"

index.html (в папке "/ templates")

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    Test
        <br>
    <form class="teamSelection" method="POST" action="/submitted">  
       <select class="teamForm" id="teamDropdownSelector" type="text" name="teamDropdown" placeholder="Select A Team">
            <option disabled selected>Select a game</option>
            <option id="WatfordVSManchester Utd" value="">Watford VS Manchester Utd</option>
       </select>
       <input class="btn" type="submit" value="submit">
    </form>
</body>
</html>
0 голосов
/ 21 сентября 2018

Измените ваш код следующим образом:

from flask import Flask
app = Flask(__name__)

@app.route("/submitted", methods=['POST'])
def hello():
    return request.form['teamDropdown']

Пожалуйста, дайте мне знать, если это поможет.

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