我正在嘗試實現一個簡單的儀表板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') }}
添加回答
舉報
0/150
提交
取消