Flask中基本表单导致HTTP 400 - Python 3.5

2024-04-24 13:35:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的,花了几个小时尝试在Flask中为python3.5设置表单。我希望用户能够输入一个温度设定点,并点击提交按钮,并有一个变量中存储的值。 我在名为index.html的模板文件中有以下代码:

<html>
<body>
    <p><font size="6">Jewell Hot-Tub Controller</font>
    <br>
    <font size="4">Water Temperature: {{water_temp}}</p>
    <br>
    <font size="4">Set Point: {{set_point}}</p>
    <br>
    <font size="4">Enter New Set Point:</p>
    <form class="form-newtemp" method="get" action="/ChangeTemp">
        <input type="text" id="new_sp" name="new_sp" size="5" placeholder="New Temp." required>
        <input id="1submit" type="submit">
    </form>
</body>
</html>

这个代码在“烧瓶”里-测试.py“文件:

from flask import Flask, render_template, request

app = Flask(__name__)
app.debug = True

@app.route('/')
def index():
    return render_template('index.html', water_temp='12345')

@app.route('/ChangeTemp', methods=['GET'])
def process():
    new = request.form['new_sp']
    return 'New set point is:' + new

textbox中输入“27”会将浏览器发送到400 Bad Request页面:

http://127.0.0.1:5000/ChangeTemp?new_sp=27

为什么这会更改错误请求错误,而不是返回值?我看到的教程使用了POST,但是我使用了GET,这需要不同的语法吗? 另外,请让我知道,如果有什么是混乱的,或做错了。 谢谢您!你知道吗

编辑:我也试过”请求.form.get('new-sp',new)”,这将导致500内部服务器错误。你知道吗


Tags: 文件代码brformappflasknewsize
1条回答
网友
1楼 · 发布于 2024-04-24 13:35:49

解决问题的多种方法。我想最快的方法是:

<form class="form-newtemp" method="post" action="{{ url_for('process')}}">

然后呢

@app.route('/ChangeTemp', methods=['POST])
def process():
    new = request.form['new_sp']
    return 'New set point is:' + new

或者您可以不更改模板,并且:

@app.route('/ChangeTemp', methods=['GET'])
def process():
    new = request.args.get('new_sp')
    return 'New set point is:' + new

相关问题 更多 >