应用程序.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="." method="post">
Search: <input type="text" name="search">
<input type="submit" value="Show">
</form>
</body>
</html>
main.py
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/CmpPr')
def cmpP():
return render_template('CmpPr.html')
@app.route('/CmpSpes')
def cmpS():
return render_template('CmpSpes.html')
@app.route('/App', methods=['POST', 'GET'])
def App():
search = request.form['search']
return render_template('output.html', n=search)
@app.route('/Gro')
def Gro():
return render_template('Gro.html')
if __name__ == '__main__':
app.run(debug=True)
我创建了多个 html 页面
我想打印消息,从 TextBox 请求(上面的代码)并打印到另一个 html 页面
我尝试使用 request.form.get('search') 但它返回 null
如果我使用 request.form.get('search', FALSE 或 TRUE) 它会返回 FALSE 或 TRUE
我还使用了 if else 循环来指定 GET 和 POST 方法,但仍然显示相同的错误
任何人都可以帮我解决这个问题吗
谢谢你
首先,您的表单操作应该指向处理表单数据的视图(即
/App
):
<form action="/App" method="post">
其次,您应该只在请求方法为
POST
时获取表单数据,因为您已经在模板中设置了method="post"
。另外,当请求方法为 GET
时,您需要渲染包含表单的 App.html:
@app.route('/App', methods=['POST', 'GET'])
def App():
if request.method == 'POST': # get form data when method is POST
search = request.form['search']
return render_template('output.html', n=search)
return render_template('App.html') # when the method is GET, it will render App.html
附注您收到的错误已清楚地解释为表单数据中没有名为
search
的键。
你可以试试这个,对我有用
@app.route('/predict_home_price', methods=['POST'])
def predict_home_price():
try:
data = request.get_json() # Expecting JSON data
# Check if required data is provided
if not data:
return jsonify({'error': 'No JSON data received'}), 400