Flask:从外部def而不是@ app.route的def返回render_template

时间:2019-03-28 14:46:15

标签: python flask

+注意:这是我关于StackOverflow的第一个问题,反馈非常受欢迎。

我正在一个有很多页面的网站上工作,我想在用户使用搜索栏时显示带有模板的查询的一些结果,但是如果用户使用导航栏转到我的页面,我想呈现另一个模板

   @app.route("/python", methods=['GET', 'POST'])
   def python():
       language = 'python'
       search(language)
       return render_template("python/python.html")

   def search (language):
        if request.method == 'POST':
            query = request.form['search_input']
            print(query)
            return render_template('results_render.html',
            language = language, results = query)

经过一些测试,我总结了行为:
  -1.我不知道我的results_render.html是否被退回/渲染。
  -2.我知道我的python / python.html页面被渲染了,但是我不知道   
是否覆盖我的results_render.html渲染。

我的预期行为是:
  -1.如果用户转到myhost / python       return render_template("python/python.html")应该运行。
  -2.如果用户在myhost / python中搜索内容,则def search(languages):应该return render_template('results_render.html', language = language, results = query),同时覆盖
return render_template("python/python.html")

可选:如果有必要,可以将用户路由到myhost /语言/结果(语言是var)。

1 个答案:

答案 0 :(得分:1)

您需要返回val cell: Cell? = row.getCell(cellAddress.column, Row.MissingCellPolicy.RETURN_BLANK_AS_NULL) return cell ?: throw UnexpectedExcelStructureException("Unable to find $cellAddress cell on the $sheetName sheet or cell is empty") 返回的值。您可以使用search来决定是否需要这样做,因此它变为:

request.method

根据您的示例,甚至更好:

@app.route("/python", methods=['GET', 'POST'])
def python():
    language = 'python'
    if request.method == 'POST':
        return search(language)

    return render_template("python/python.html")