【问题标题】:cannot get html front end to pass input to python script using flask无法让 html 前端使用烧瓶将输入传递给 python 脚本
【发布时间】:2022-01-08 04:19:50
【问题描述】:

所以,我正在构建一个 webapp,它从购物网站获取链接,然后通过 python 脚本运行它,该脚本解释数据,将其存储在数据库中并填充表格以供参考。

我遇到了几个问题:

  1. 如果我将链接放入前端输入(html)然后提交它只会带我到“页面不工作 HTTP 错误 405”。我不知道该怎么处理那个。

  2. 更紧迫的问题是,即使我相信我通过烧瓶正确路由了输入,但当我在前端运行 python 脚本时遇到了这个问题 “RuntimeError:在请求上下文之外工作。”

我尝试了这些现有帖子中提到的一些建议,但无济于事:

Sending data from HTML form to a Python script in Flask

Connecting python script with html button and flask

我还尝试将脚本本身更改为使用 getvalue() 而不是 getvalue,以便将其关联为 python 脚本的输入变量。

这是我在 app.py 中的路由代码

@app.route("/", methods=['POST'])
 def getvalue():
   HTML_Info = request.form['data_bridge']
   return HTML_Info

HTML 输入代码

<form name="passdata" action="{{ url_for('getvalue') }}" method="POST">
        <input type='text' name="data_bridge" placeholder="paste shoe link here">
        <input type="submit">
    </form>

而python代码只是导入app文件和getvalue函数,然后将其赋值给一个变量。

如果你们能帮我解决这个问题,我将不胜感激。

【问题讨论】:

    标签: python html flask


    【解决方案1】:

    我假设您想从用户那里获取输入(例如鞋子链接),然后根据输入进行一些操作。

    要从 / 路径访问 HTML 表单,您需要在该路径中同时启用 GETPOST 请求。否则,当您尝试从浏览器访问根路径 / 时,您将收到 HTTP Method not allowed 错误。

    app.py:

    from flask import Flask, render_template, request
    
    app = Flask(__name__)
    
    
    def get_value_related_info(value):
        return f"You have entered {value}"
    
    
    @app.route('/', methods=['POST', 'GET'])
    def getvalue():
        if request.method == "POST":
            HTML_Info = request.form['data_bridge']
            return get_value_related_info(HTML_Info)
        return render_template('form.html', text="")
    
    
    if __name__ == "__main__":
        app.run(debug=True)
    

    输出:

    • 提交表单之前:

    • 表单提交后:

    templates/form.html:

    <html>
    <head>
        <title>Form example</title>
    </head>
    <body>
    <form name="passdata" action="{{ url_for('getvalue') }}" method="POST">
        <input type='text' name="data_bridge" placeholder="paste shoe link here">
        <input type="submit">
    </form>
    </body>
    </html>
    

    说明:

    • 我在get_value_related_info 方法中模拟了用户输入的功能。

    参考资料:

    【讨论】:

    • 感谢您的帮助。我把代码放进去,但现在必须用 pytest 解决问题,每当我完成这个问题时,我会更新这是否有助于解决它!
    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    相关资源
    最近更新 更多