post方法的正确使用-以select形式获取flask
The correct use of method post-get in flask in select form
我尝试在 html 中使用 select 方法与烧瓶。我的密码是
from flask import Flask, render_template, request
import psycopg2
import numpy as np
d = [10,12,16,17]
@app.route('/demo_html', methods=['GET', 'POST'])
def process_number():
selected_number = ''
if request.method == 'POST':
selected_number = request.form['number']
return render_template('demo_html.html', d=d, length=len(d),selected_number=selected_number)
这是我的 html 文件
demo_html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="POST">
<select>
{% for i in range(length) %}
<option name="number">change number {{d[i]}}</option>
{% endfor %}
</select>
<input type="submit">
</form>
<p>you selected number {{ selected_number }}</p>
</body>
</html>
在第二步我收到以下错误:Bad Request
浏览器(或代理)发送了该服务器无法理解的请求。
问题:如何使用 post 方法成功渲染模板?
您应该在调试模式下尝试 运行 Flask 应用程序:
app.run(host='127.0.0.1', port=5000, debug=True)
这将为您提供更详细的错误消息:
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'number'
这表示提交的表单中没有名称为number
的表单项。查看您的 HTML 表单,看起来 name
属性放错地方了;您还需要在 select
元素中使用它。此 HTML 表单修复了错误:
<form action="#" method="POST">
<select name="number">
{% for i in range(length) %}
<option name="number">change number {{d[i]}}</option>
{% endfor %}
</select>
<input type="submit">
</form>
我尝试在 html 中使用 select 方法与烧瓶。我的密码是
from flask import Flask, render_template, request
import psycopg2
import numpy as np
d = [10,12,16,17]
@app.route('/demo_html', methods=['GET', 'POST'])
def process_number():
selected_number = ''
if request.method == 'POST':
selected_number = request.form['number']
return render_template('demo_html.html', d=d, length=len(d),selected_number=selected_number)
这是我的 html 文件
demo_html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="POST">
<select>
{% for i in range(length) %}
<option name="number">change number {{d[i]}}</option>
{% endfor %}
</select>
<input type="submit">
</form>
<p>you selected number {{ selected_number }}</p>
</body>
</html>
在第二步我收到以下错误:Bad Request 浏览器(或代理)发送了该服务器无法理解的请求。
问题:如何使用 post 方法成功渲染模板?
您应该在调试模式下尝试 运行 Flask 应用程序:
app.run(host='127.0.0.1', port=5000, debug=True)
这将为您提供更详细的错误消息:
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'number'
这表示提交的表单中没有名称为number
的表单项。查看您的 HTML 表单,看起来 name
属性放错地方了;您还需要在 select
元素中使用它。此 HTML 表单修复了错误:
<form action="#" method="POST">
<select name="number">
{% for i in range(length) %}
<option name="number">change number {{d[i]}}</option>
{% endfor %}
</select>
<input type="submit">
</form>