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模型输出}}的主要内容,如果未能解决你的问题,请参考以下文章

Jinja:if语句内的字符串内的变量

R语言中的if else语句

Linux中if-else条件判断语句

对于互斥条件,多个“if”语句和“if-else-if”语句是不是相同?

if() if() else else if() else怎么运用,请高手详细的解说一下,一定采纳!

SQL语句中能否含有if....else...判断语句?