我有一个应用程序,该应用程序使用变量在 pandas 数据框中定位行。我希望用户使用html中的input[type=range]
选择要用作变量x的年份。
这是我的python文件:
from flask import Flask, render_template, request
app = Flask(__name__)
x = '2005'
mask = (df['start'] < x) & (df['end'] > x)
output = df.loc[mask]
@app.route("/")
def home():
return render_template("index.html", output=output)
这是我的html表单:
<form name="myform" method="POST">
<input type="range" name="yearInputName" id="yearInputId" value="1980" min="1880" max="2010">
</form>
如何将变量x分配给表单的输出?因此,例如,当用户选择2007年时,在python文件中,变量x将更改为“ 2007”吗?
答案 0 :(得分:0)
使用request.form.get()
通过POST方法访问表单中的数据。
类似的东西:
from flask import Flask, render_template, request
app = Flask(__name__)
def calculate(year):
mask = (df['start'] < x) & (df['end'] > year)
return df.loc[mask]
@app.route("/", mothods=['POST', 'GET'])
def home():
try:
input_year = request.form.get('yearInputName')
except:
input_year = '2005' # Default
# You may wish to add some validation for input_year here.
output = calculate(input_year)
return render_template("index.html", output=output)
答案 1 :(得分:0)
如果我对您的理解正确,那么您基本上想根据用户输入更改实际的python文件。可能不会。因为多个用户将有单独的输入。 无论我了解什么,这都是您可能想要(或可能会帮助您)的事情。
要从发帖请求中获取输入-
只需使用request.form.get('name')
即可获取数据。
您可能想使用JavaScript发送帖子数据。
尝试一下-
var element = document.getElementById('yearInputId')
var xhr = new XMLHttpRequest()
xhr.open('/url') \\the route you want this data to handle
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
xhr.send("year=" + element.value)
您可能希望将年份存储在数据库或会话变量中
请参见using db with flask和using sessions
如果您不想存储年份而只是暂时存储年份,则可以将其存储在会话变量中。
如果您要根据发帖请求投放“ /”
#check if request method is post
if request.method == 'POST':
year = request.form.get('year') #change year to your html post variable name
return render_template("index.html", output=year)
else if request.method == 'GET':
return render_template("index.html", output=output)
是的,请确保在路由中启用发布请求。
@app.route('/', mothods=['POST', 'GET'])
建议-