python - Flask 表单数据未发送
问题描述
我正在用 Flask 构建一个网络汽车价格预测器。但是,当我单击表单的提交按钮时,什么也没有发生,数据也没有发送也没有处理。我的终端在运行 Flask 应用程序后显示 HTTP 代码 200 和 304。
这是 HTML 表单:
<form action= '{{url_for('predict')}}' method="POST" id="form"></form>
<h3>How much is my car worth?</h3>
<p>Get an accurate price for your vehicle by entering the following details</p>
<section class='year'>
<label for="year">Year</label>
<input type="number" name="year" id="year1" required='required' min="0">
</section>
<section class='msrp'>
<label for="msrp">MSRP</label>
<input type="number" name="msrp" id="msrp" required='required' min="0">
</section>
<section class='kms'>
<label for="kms">Kilometers Driven</label>
<input type="number" name="kms" id="kms" required='required' min="0">
</section>
<section class='owner'>
<label for="owner">Previous Owners</label>
<select name="owner" id="owner">
<option value="1">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</section>
<section class='fuel-type'>
<label for="fuel">Fuel Type</label>
<select name="fuel" id="fuel">
<option value="Petrol">Petrol</option>
<option value="Diesel">Diesel</option>
<option value="CNG">CNG</option>
</select>
<section class='seller-type'>
<label for="seller-type">Dealer or individual?</label>
<select name="seller-type" id="seller-type">
<option value="Dealer">Dealer</option>
<option value="Individual">Individual</option>
</select>
</section>
<section class='transmission-type'>
<label for="transmission">Transmission</label>
<select name="transmission" id="transmission">
<option value="Manual">Manual</option>
<option value="Automatic">Automatic</option>
</select>
</section>
<section>
<input type='submit' id='submit'>
</section>
</form>
<div id="price">
<p>{{predPrice}}</p>
</div>
</body>
</html>
这是 Flask 应用程序:
import re
from flask import Flask, render_template, request
import pickle
import requests
import numpy as np
import pandas as pd
model = pd.read_pickle(r'predictor/price/vehicles/file.pkl')
app = Flask(__name__)
@app.route("/", methods = ['GET', 'POST'])
def predict():
if request.method == 'POST':
year = int(request.form["year"]) # taking year input from the user
tot_year = 2020 - year
present_price = float(request.form["msrp"]) #taking the present prize
fuel_type = request.form["fuel-type"] # type of fuel of car
# if loop for assigning numerical values
if fuel_type == "Petrol":
fuel = 2
elif fuel_type == "Diesel":
fuel= 1
else:
fuel = 0
kms_driven = int(request.form["kms"]) # total driven kilometers of the car
transmission = request.form["transmission-type"] # transmission type
# assigning numerical values
if transmission == "Manual":
transmission_type = 1
else:
transmission_type = 0
seller_type = request.form["seller_type"] # seller type
if seller_type == "Individual":
seller_individual = 1
else:
seller_individual = 0
owner = int(request.form["owner"]) # number of owners
# X = [['Age', 'Present_Price', 'Kms_Driven', 'Fuel_Type', 'Seller_Type', 'Transmission', 'Owner']]
values = [[
tot_year,
present_price,
kms_driven,
fuel,
seller_individual,
transmission_type,
owner,
]]
# created a list of all the user inputed values, then using it for prediction
prediction = model.predict(values)
prediction = round(prediction[0],2)
# returning the predicted value inorder to display in the front end web application
return render_template("home.html", predPrice = 'xd')
else:
return render_template('home.html')
if __name__ == '__main__':
app.run(debug=True)
HTML 在浏览器中打开,我可以填写表格。我什至可以单击提交按钮,但没有任何反应。此外,当我单击提交时,终端上没有出现任何消息。
解决方案
问题在于您的表单本身。您没有将输入元素放在表单元素中。您的所有部分都必须放在您的表单标签内。另一种方法是在所有输入中包含表单 id 属性。您已为表单提供了“form”的 id,因此只需使用form="form"
. 以下是更新部分的示例。
<section class='year'>
<label for="year">Year</label>
<input type="number" name="year" id="year1" form="form" required='required' min="0"
</section>
请记住,提交按钮也必须更新。
推荐阅读
- c# - 在用户键入类似于来自 wpf 的 PreviewKeyDown 时修改条目的 Text 属性
- android - Zebra RFID getBeeperVolume 抛出 RFID_API_SUCCESS
- vue.js - 在 vue2-editor 中使用 quill-image-resize-module 不会实现 ImageResize
- java - jasper 报告中未显示数据,但显示元数据
- mysql - 如何从多个 id 的字符串中按 id 选择行
- python - 我的 pygame rects 给出的 rect 参数无效错误
- django - 如何在 Djnago 中从多对多关系表中获取数据?
- terraform - Terraform - 合并顶级资源参数
- javascript - 如何使用 PHP 将 UTF-8 编码为 Unicode 转义序列,如“\u00C1”?
- python - 如何将字符串中的数字转换为每个数字单独的列表