有时,我要选择在哪里进行for循环和许多其他计算
考虑下面的代码
isp_ratings_per_service = db.session.query(func.count(Service_metric_ratings.ratings_id).label('count_of_users'),
func.sum(Service_metric_ratings.ratings_id).label('sum_of_ratings'),
Isps.isp_name, Service_metric.metric_name, Services.service_name)
.filter(Service_metric_ratings.isp_id == Isps.isp_id)
.filter(Service_metric_ratings.ratings_id == Ratings.ratings_id)
.filter(Service_metric_ratings.metric_id == Service_metric.metric_id)
.filter(Service_metric_ratings.user_id == User.user_id)
.filter(Service_metric_ratings.service_id == Services.service_id)
.filter(Service_metric.metric_name == metric_name)
.filter(Services.service_name == service_name)
.group_by(Isps.isp_name)
对于下面的循环,将在烧瓶/python路由中获得我想要的mne
for i in isp_ratings_per_service:
my_count=i.count_of_users
my_ratings=i.sum_of_ratings
isp=i.isp_name
如果我想计算average_ratings,它将是
my_ratings/my_count
我可以将结果传递给jinja模板。。。。像这样没有问题的
return render_template('view_average_isp_ratings.html',
isp_ratings_per_service=isp_ratings_per_service,
count_of_users_who_rated=count_of_users_who_rated,
average_isp__service_ratings=average_isp__service_ratings,
)
接下来我的问题是,如果我使用jinja处理所有事情会怎样。。。它会减慢我的应用程序的速度吗。。
根据Jinja2文档,您应该尽可能减少放入jinja的逻辑。在jinja中做一些逻辑很好,可以让一切变得更容易,但在jinja里做这些似乎并不合理。