首页 > 解决方案 > 使用烧瓶从下拉菜单中获取数据

问题描述

我对烧瓶完全陌生,并且真的完全迷失了如何处理这个问题。我已经研究了其他 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 localhost 服务器,并且正在通过 pycharm 使用烧瓶。我目前所做的只是在 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()

原因是我可以看到这个脚本是否真的被调用了,如果是,它将创建一个名为 newTest 的新 csv 文件。运行网页并提交后没有出现新的csv文件,所以这个脚本没有运行,这可能是因为我没有正确配置flask?/apache足够的假设是不正确的?

标签: pythonhtmlflask

解决方案


您只需告诉烧瓶方法接受 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"

推荐阅读