2016-07-14 12 views
0

フラスコにはまったく新しいものです。どのように適切に動作するかわかりません。しかし、私がやろうとしているのは、私がウェブページを照会しようとしているdryscrapeモジュールを使用することです。フラスコを自分のフロントエンドに使用する。 しかし、私はクエリ文字列を渡すのに問題があります。 私は何をしようとしているのです。私はコメントし、このフラスコがクエリーストリングを渡す

@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() 

としてのように私の他の機能にこれを継続して使用する「クエリ」を使用して

@app.route("/", methods=['GET', 'POST']) 
def getIndex(): 
    query = request.form.get('query') 
    return render_template('index.html',query=query),query 

。私は新しい関数にクエリ文字列を渡して、残りの部分を行うためにdryscrapeを使用しようとしています。しかし、私は何か間違っている。それは動作しません。助けが必要!

+0

[可変ルール](http://flask.pocoo.org/docs/0.11/quickstart/#variable-rules) – alexpeits

+0

「request.form」が投稿の本文から読み取ります。 'request.args'はクエリ文字列から読み込みます。 – dirn

答えて

0

要求全体でクエリ文字列を使用できるようにするには、クライアント側またはサーバー側のどこかにクエリ文字列を格納する必要があります。 Flask-Sessionはこれをサーバー側で処理しますが、おそらく最も簡単な解決策です。セッションデータを保存する場所が必要で、ファイルシステムなど、さまざまなオプションがあります。

例:HTTP要求と応答の

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 
    ... 
0

あなたの概念が明確ではありません。説明するためにいくつかのユースケースを仮定しましょう。あなたがyour.domain/search_infoを要求すると

  1. 、フラスコが機能search_info()

  2. を実行し、その後、フラスコをstring = getIndex()[1]に基づいて1 string = getIndex()[1]

  3. search_info()ラインに別の機能getIndex()を実行し、フラスコをGETを送信しますyour.domain/に問い合わせて、getIndex()

  4. しかし、フラスコはGETクエリを送信したときにNOTHINGをクエリします。

  5. request.form.get('query')は何も取得しません。 print queryの場合、Noneの値が得られます。


は、あなたのコードは、あなたが偽のGETクエリを送信するためにanother fake functionを行う必要があり、正しい振る舞いを持たせるために(どちらが深刻な問題を引き起こす場合があります)。

@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のソリューション@について

YesまたはNo

セッションは、あなたが照会した後にのみ、この問題を解決するための一般的な方法です。しかし、私はそれについての説明は見ませんでした。

あなたの説明が完了していないので、、Sessionが問題を解決できる場合は、この回答を削除します。

関連する問題