Jinja条件语句(if / else)和{{py模型输出}}
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jinja条件语句(if / else)和{{py模型输出}}相关的知识,希望对你有一定的参考价值。
我在app.py中有一个Flask应用程序,其中包含2个回归模型和对html模板的调用,[[result.html。
我希望用户输入到我的Flask应用程序中的每个数字预测(=价格和= avgprofit)可以根据哪个预测值较大来更改颜色(即,如果给定输入的价格>平均利润,则为数字价格输出值变为绿色)。在app.py中:
from flask import Flask, request, render_template
import pickle
import numpy as np
app = Flask(__name__)
@app.route('/')
def home():
return render_template('result.html')
@app.route('/', methods=['POST','GET'])
def get_price():
if request.method=='POST':
result=request.form
size = result['size']
condition = result['condition']
pkl_file = open('cat', 'rb')
index_dict = pickle.load(pkl_file)
cat_vector = np.zeros(len(index_dict))
try:
cat_vector[index_dict['size_'+str(brand)]] = 1
except:
pass
try:
cat_vector[index_dict['condition_'+str(condition)]] = 1
except:
pass
pkl_file = open('model.pkl', 'rb')
model = pickle.load(pkl_file)
price = model.predict(cat_vector.reshape(1, -1))
logpkl_file = open('logmodel.pkl', 'rb')
logmodel = pickle.load(logpkl_file)
avgprofit = logmodel.predict(cat_vector.reshape(1, -1))
return render_template('result.html', price=price, avgprofit=avgprofit)
if __name__ == '__main__':
app.debug = True
app.run()
并且在result.html:
<!DOCTYPE html> <html> <body> <form action = "/reSale" method="POST"> <p> Select Condition : <select name="condition"> <option value="new">New </option> <option value="used">Used </option> </select> <p> Select Size : <select name="size"> <option value="small">Small </option> <option value="large">Large </option> </select> <p> <input type ="submit" value="submit" /> </p> <a href="#" class="btn btn-xl btn-light mr-4">Price prediction: $ price </a> <a href="#" class="btn btn-xl btn-dark">Historic profit prediction: $ avgprofit </a> % if price > avgprofit % <span style="background-color:green;color:white;">Score</span> % else % <span>Score</span> % endif % </body> </html
我的jinja错误显示为:jinja2.exceptions.TemplateSyntaxError:预期令牌':',得到了''
我的问题是,一种格式的HTML动态更改输出如何基于条件语句进行更改?
和
仅用于打印。只需使用
% if price > avgprofit %
更新:您似乎也对同一URL(/
)进行了GET请求的重复定义。进行以下更改:
def home(): return render_template('result.html', price=0, avgprofit=0)
并修改get_price
以仅处理POST方法(因为GET已由home
处理):
@app.route('/', methods=['POST']) def get_price():
以上是关于Jinja条件语句(if / else)和{{py模型输出}}的主要内容,如果未能解决你的问题,请参考以下文章
对于互斥条件,多个“if”语句和“if-else-if”语句是不是相同?