为了账号安全,请及时绑定邮箱和手机立即绑定

对 Flask 的字符串 POST 请求

对 Flask 的字符串 POST 请求

肥皂起泡泡 2022-07-05 17:14:26
我正在尝试实现一个简单的仪表板Flask,它将:接受用户文本输入,带有“提交”按钮。将此用户输入发布到烧瓶。Flask 接受这个输入,对它做一些事情,然后向另一个 API 发出 GET 请求。这个 GET 请求返回数据并以某种方式显示(可能只是console.log现在)例如,使用星球大战 API:用户输入星球大战角色的名称(假设没有拼写错误)Flask 读取这个输入名称,并将其映射到一个 ID 号,因为Star Wars API接受 ID 号。向 Star Wars API 发送 GET 请求,以获取完整的角色信息。现在,我们可以只输入console.log字符信息(例如“身高”、“质量”等)我现在拥有的:app.pyfrom flask import Flask, jsonify, request, render_templateimport randomimport jsonapp = Flask(__name__)@app.route("/")def index():    return render_template('index.html')@app.route("/form_example", methods=["GET", "POST"])def form_example():    if request.method == "POST":        language = request.form("character_name")        starwars_dictionary = {"Luke Skywalker":"1", "C-3PO":"2", "R2-D2": "3"}        # starwars_dictionary is a dictionary with character_name:character_number key-value pairs.        # GET URL is of the form https://swapi.co/api/people/<character_number>    return render_template("index.html")if __name__ == "__main__":    app.run(debug=True)索引.html<!DOCTYPE html><html><head>    <title>py-to-JS</title>    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script></head><body>    <h3>Sample Inputs</h3>    <ul>        <li>Luke Skywalker</li>        <li>C-3PO</li>        <li>R2-D2</li>    </ul>    <form method="POST">        Enter Name: <input type="text" name="character_name"><br>        <input type="submit" value="Submit"><br>    </form></body></html>在这种当前形式中,当我运行应用程序时,它返回“方法不允许;请求的 URL 不允许此方法”。我不确定我错过了什么;它可能只是没有正确连接在一起,但我不确定正确的语法是什么。
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

可能表单正在发布到/端点,因为您没有声明表单action。


需要更像:


<form method="POST" action="/form_example">

或者,如果您想变得时髦并使用 Jinja 的url_for功能:


<form method="POST" action="{{ url_for('form_example') }}">

编辑:也就是说,你可以用一个路由函数来处理这个问题:


@app.route("/", methods=["GET", "POST"])

def index():

    if request.method == "POST":

        language = request.form("character_name")

        starwars_dictionary = {"Luke Skywalker":"1", "C-3PO":"2", "R2-D2": "3"}


        # Logic to query remote API ges here.


    else: # Assume method is GET

        return render_template("index.html")

然后进行表单操作{{ url_for('index') }}


查看完整回答
反对 回复 2022-07-05
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信