在flask中,如何从另一个视图中的另一个函数/路由调用数据,如b所述

2024-06-07 17:28:32 发布

您现在位置:Python中文网/ 问答频道 /正文

以下三个环节并不是用外行的话来解释我真正想要达到的目标

How do I call one Flask view from another one?

Get json from one view by calling it from another view

Call a route from within another route in Flask

我有以下代码

@app.route('/rate_isp_service', methods=['GET', 'POST'])
@login_required
def rate_isp_service():
isp_query = db.session.query(Isps)
isp_entries = [dict
               (isp_id=isp.isp_id, isp_name=isp.isp_name, isp_description=isp.isp_description) for isp in
               isp_query]

services_query = db.session.query(Services)
services_entries = [dict
                    (service_id=service.service_id, service_name=service.service_name,
                     service_catergory_id=service.service_catergory_id) for service in
                    services_query]

ratings_query = db.session.query(Ratings)
ratings_entries = [dict
                   (ratings_id=rating.ratings_id, rating_value=rating.rating_value,
                    rating_comment=rating.rating_comment) for rating in
                   ratings_query]

servicemetric_query = db.session.query(Service_metric)
servicemetric_entries = [dict
                         (metric_id=metric.metric_id, metric_name=metric.metric_name,
                          metric_description=metric.metric_description) for metric in
                         servicemetric_query]


return render_template('rate_isp_service.html', isp_entries=isp_entries, services_entries=services_entries,ratings_entries=ratings_entries)

这段代码填充了html模板中的所有下拉列表,只要有表单。

我不得不在所有视图中多次包含此代码,因为我找不到在某些视图中包含此代码的方法

我想采取的方法是创建这样的视图

@app.route('/dropdowns', methods=['GET', 'POST'])
@login_required
def dropdowns():
    that code here

能够在任何路径或视图中调用dropdwon函数


Tags: 代码nameinfromiddbsessionservice
1条回答
网友
1楼 · 发布于 2024-06-07 17:28:32

为什么不把它放在一个函数中,然后随时调用它呢。像这样:

def new_func()
    isp_query = db.session.query(Isps)
    isp_entries = [dict
               (isp_id=isp.isp_id, isp_name=isp.isp_name,isp_description=isp.isp_description) for isp in
               isp_query]

    services_query = db.session.query(Services)
    services_entries = [dict
                    (service_id=service.service_id, service_name=service.service_name,
                     service_catergory_id=service.service_catergory_id) for service in
                    services_query]

    ratings_query = db.session.query(Ratings)
    ratings_entries = [dict
                   (ratings_id=rating.ratings_id,rating_value=rating.rating_value,
                    rating_comment=rating.rating_comment) for rating in
                   ratings_query]

    servicemetric_query = db.session.query(Service_metric)
    servicemetric_entries = [dict
                         (metric_id=metric.metric_id, metric_name=metric.metric_name,
                          metric_description=metric.metric_description) for metric in
                         servicemetric_query]

    return result1, result2, result3


@app.route('/rate_isp_service', methods=['GET', 'POST'])
@login_required
def rate_isp_service():
    result1, result2, result3 = new_func()

一个更好的方法是在同一个文件夹中创建一个utils.py并将这个新函数放在其中,导入它并在需要时使用它。

相关问题 更多 >

    热门问题