我正在使用Logistic回归进行恶意网页检测,并且使用了kaggle的数据集。我想使用flask和html来预测URL的好坏。
这是app.py中的代码段
if request.method=='POST':
comment=request.form['comment']
X_predict1=[comment]
predict1 = vectorizer.transform(X_predict1)
New_predict1 = logit.predict(predict1)
new = New_predict1.tolist()
new1 = " ".join(str(x) for x in new)
return render_template('result.html',prediction=new1)
我在result.html中编写的这段代码
{% if prediction == 1%}
<h2 style="color:red;">Bad</h2>
{% elif prediction == 0%}
<h2 style="color:blue;">Good</h2>
{% endif %}
为什么此代码未显示结果(差/好)?
答案 0 :(得分:0)
我假设在app.py
中
New_predict1.tolist()
返回一个列表。" ".join(str(x) for x in new)
返回一个串联的字符串值。在result.html
中:
prediction == 1
或prediction == 0
将prediction
的值与整数进行比较。但是,您是从app.py
发送一个串联的字符串值。因此,此Bad
或Good
将不会显示在模板中。prediction == "some constant"
的字符串比较我转载了您的情况:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods = ['GET', 'POST'])
def home():
if request.method == "POST":
comment=request.form.get('comment')
X_predict1=[comment]
# Do some operations
#predict1 = vectorizer.transform(X_predict1)
#New_predict1 = logit.predict(predict1)
#new = New_predict1.tolist()
#new1 = " ".join(str(x) for x in new)
# Dummy list
new = [1, 2, 3]
# " ".join() returns a string
new1 = " ".join(str(x) for x in new)
return render_template('result.html', prediction=new1)
return render_template('result.html')
if __name__ == "__main__":
app.run(debug=True)
result.html
:
<html>
<head>
<title>Home</title>
</head>
<body>
<form action="/" method="post">
Comment:
<input type="text" name="comment"/>
<input type="submit" value="Submit">
</form>
<h3>Prediction Result</h3>
{% if prediction == 1 %}
<h2 style="color:red;">Bad</h2>
{% elif prediction == 0 %}
<h2 style="color:blue;">Good</h2>
{% else %}
<h2 style="color:black;">{{prediction}}</h2>
{% endif %}
</body>
</html>
输出:
您会看到else
和if
块都被跳过了,模板中的elif
块被触发了。