相当新的烧瓶。不知道它是如何正常工作的。但是,我正在尝试使用dryscrape模块,我正在尝试查询网页。使用烧瓶为我自己的前端。 但是我在传递查询字符串时遇到问题。 所以我要做的就是。
@app.route("/", methods=['GET', 'POST'])
def getIndex():
query = request.form.get('query')
return render_template('index.html',query=query),query
使用“查询”我想继续将其用于我的其他功能
@app.route("/search_info")
def search_info():
string = getIndex()[1] ***# Here I'm having the issue. I'm trying to get the query string here and follow the proccess.***
print string
sess = dryscrape.Session(base_url='http://www.watchfreemovies.ch/')
sleep(4)
sess.visit('/')
search_index = sess.at_xpath('//*[@name="search_keywords"]')
search_index.set(string)
sleep(4)
sess.render('inputz.png')
search_index.form().submit()
评论道。我正在尝试将我的查询字符串传递给我的新函数,并使用dryscrape来完成剩下的工作。但是我做错了。它不起作用。需要帮助!
答案 0 :(得分:0)
为了使查询字符串可以跨请求使用,您需要将其存储在客户端或服务器端的某个位置。 Flask-Session将在服务器端为您处理此问题,可能是最简单的解决方案。您需要在某个地方存储会话数据,并且有各种不同的选项,包括文件系统。
示例:强>
from flask import Flask, session
from flask.ext.session import Session
app = Flask(__name__)
# Check Configuration section for more details
SESSION_TYPE = 'filesystem'
app.config.from_object(__name__)
Session(app)
@app.route("/", methods=['GET', 'POST'])
def getIndex():
query = request.form.get('query')
session['query'] = query
return render_template('index.html',query=query),query
@app.route("/search_info")
def search_info():
query = session.get('query')
print query
...
答案 1 :(得分:0)
您的HTTP请求和响应概念尚不清楚。让我假设一些用例来解释。
当您请求your.domain/search_info
时,将运行search_info()
功能
然后,烧瓶将在getIndex()
第1行search_info()
string = getIndex()[1]
根据string = getIndex()[1]
,flask将向your.domain/
发送GET查询,并运行getIndex()
但是,在发送GET查询时,flask会查询NOTHING。
因为request.form.get('query')
什么也得不到。当您print query
时,您将获得None
价值。 (这可能会导致严重的问题)
要使代码具有正确的行为,您应该another fake function
发送伪GET查询。
@app.route("/", methods=['GET', 'POST'])
def getIndex():
query = request.form.get('query')
return render_template('index.html',query=query)
@app.route("/<fake_query>")
def _getIndex(fake_query):
query = fake_query
return query
@app.route("/search_info")
def search_info():
fake_query = 'whatever'
string = _getIndex(fake_query)
print string
...
关于@Naishy的解决方案
是或否。
会话是解决此问题的常用方法,仅在您查询后。但我没有看到任何描述。
由于您的描述未完成,如果会话可以解决您的问题,我将删除此答案。