保存从表单提交生成的Flask网页的HTML可以得到400个输出

2024-04-18 08:39:51 发布

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

每当我试图在本地测试服务器上保存从表单提交到Flask中生成的网页的HTML时,保存的页面会给出以下输出:

Bad Request

The browser (or proxy) sent a request that this server could not understand.

我可以保存我的应用程序的其他页面没有问题,它只是通过表单提交的页面。在

有问题的烧瓶url路径的片段,这是从另一个url上的表单中找到的:

@app.route('/profile', methods=['GET', 'POST'])
def profile():
    dist_type = request.form['district-select']
    dist_num  = int(request.form['district-number'])
    json_data = {
        'dist_type' : dist_type,
        'dist_num'  : dist_num
    }
    return render_template('profile.html', data = json_data)

HTML模板'配置文件.html'由json_数据填充:

^{pr2}$

当我用Ctrl+S将这个填充的模板保存在我的浏览器中,或者将它链接到其他站点时,我无法访问HTML,而是收到400个错误的请求


Tags: form模板jsonurl表单datarequestdist
1条回答
网友
1楼 · 发布于 2024-04-18 08:39:51

request.form在GET请求期间不填充,仅在POST(和PUT等)期间填充。试图访问request.form上不存在的密钥会引发400错误。您应该保护需要表单数据的代码,以便它只在POST请求期间执行。在

@app.route('/profile', methods=['GET', 'POST'])
def profile():
    data = None

    if request.method == 'POST':
        data = {
            'dist_type': request.form['district-select'],
            'dist_num': int(request.form['district-number'])
        }

    return render_template('profile.html', data=data)

相关问题 更多 >