如何在没有路由的情况下在python flask中执行普通函数并使用路由返回此过程的结果?

时间:2017-06-15 22:48:20

标签: python flask

该应用正在加载" links_submit.html"它有一个可以编写链接的字段,例如(www.google.com)并提交它,然后该应用程序将此URL作为HTTP Post接收并重定向到另一个页面" post_response.html&#34 ;其中包含一个简单的html,用于反馈单词" Ok"。然后我想用这个链接进行一个过程(抓取谷歌并搜索特定的东西),完成这个过程后,自动重定向" post_reponse.html"到另一页显示我从谷歌提取的结果。现在我不确定如何对我在烧瓶上的应用说:"好吧现在让我们使用正常的功能(不是路由),例如:

def loadpage(link_sent_by_the_http post):
   res = requests.get('www.google.com')

想象一下,在加载页面后,我还在谷歌上提取了一些html标签,在完成此过程后,我想重定向页面" post_respose.html"用" ok"到一个新的HTML页面,其中包含从谷歌提取的html标签。 请注意我知道如何加载页面谷歌和提取我想要的,但我不知道如何在Flask中间插入此功能/过程,然后从正常的HTML重定向"确定&# 34;对于我已经提取的结果的新路线。

import requests
from flask import Flask, render_template, request, url_for

app = Flask(__name__)

@app.route('/test')
def form():
   return render_template('links_submit.html')

@app.route('/links/', methods=['POST'])
def links():
    links=request.form['links']
    return render_template('post_response.html')

Intern Process (Load the received link > Extract what I want)
and then redirect the "post_response.html" to another "html" which will
contain the results that I have extracted) 

if __name__ == '__main__':
  app.run(debug=True)

1 个答案:

答案 0 :(得分:1)

两种方法 -

创建一个python文件说webfunctions.py并将您的函数放入此文件中。 例如 -

def inc(x):
    return int(x) + 1

现在,在您的flask应用文件中,您可以导入整个文件或仅导入函数 -

from webfunctions import inc

@app.route('/whatsnext/', methods=['POST'])
def waiting():
    curVal=request.form['x']
    nextVal = inc(curVal)
    return render_template('post_response.html', nextVal=nextVal)

或者,您可以在烧瓶应用文件的顶部声明您的定义。如下 -

import requests
from flask import Flask, render_template, request, url_for

def inc(x):
    return int(x) + 1


@app.route('/whatsnext/', methods=['POST'])
def waiting():
    curVal=request.form['x']
    nextVal = inc(curVal)
    return render_template('post_response.html', nextVal=nextVal)